错误:请求的资源上没有“Access-Control-Allow-Origin”标头。因此不允许来源'http:// localhost:8000'访问

时间:2014-10-08 22:21:15

标签: jquery ajax rotten-tomatoes

我是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

2 个答案:

答案 0 :(得分:3)

你只需要调整.ajax来使用jsonp。

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

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

});

答案 1 :(得分:0)

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

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