2

我是 AJAX 调用的新手,我想模拟 rottentomatoes 搜索页面。我得到了正确的 JSON 文件,但它不会在我的浏览器上加载。我一直在研究并没有找到解决方案。任何帮助,将不胜感激。

这是我的代码。

$(document).ready(function() {
  var apikey = "qvq7jf4n29fv8m8pxqqyxsxg";
  var baseUrl = "http://api.rottentomatoes.com/api/public/v1.0";
  var moviesSearchUrl = baseUrl + '/movies.json?apikey=' + apikey;

 $('form').submit(function (evt) {
    var $submitButton = $('#submit');
    var $searchField = $('#search');
    evt.preventDefault();
    $searchField.prop("disabled",true);
    $submitButton.attr("disabled", true).val("searching....");
    var query = $searchField.val();
    var rotten = moviesSearchUrl + '&q=' + encodeURI(query);

    $.ajax(rotten,

    function(data){

      if (data.items.length > 0) {
        $.each(data.items,function(i,movie) {
          movieHTML += '<li class="grid-25 tablet-grid-50">';
          movieHTML += '<a href="' + movie.title + '" class="image">';
          movieHTML += '<img src="' + movie.posters.original + '"></a></li>';
        }); // end each
      } else {
        movieHTML = "<p>No photos found that match: " + animal + ".</p>"
      }
      $('#movies').html(movieHTML);
      $searchField.prop("disabled", false);
      $submitButton.attr("disabled", false).val("Search");
    }); // end getJSON

  }); // end click

}); // end ready
4

2 回答 2

3

您只需要调整 .ajax 即可使用 jsonp。

这是工作 jsfiddle http://jsfiddle.net/hvtz7kfv/2/

 $.ajax({
     dataType: "jsonp",
     url:  rotten,   
     success: searchCallback

});
于 2014-10-09T00:18:23.843 回答
0

与其直接向烂番茄发送 ajax 请求,不如向您的服务器发送请求,让您的服务器将请求发送给烂番茄,然后将该响应转发回您的客户端。不过,我认为您不必使用公共 API 来做到这一点。

你在用 Chrome 吗?我认为 Chrome 有一些涉及 CORS 和 localhost 的奇怪限制。

于 2014-10-08T23:45:21.350 回答