Jquery 如何在chrome中不出现mime错误的情况下从facebook页面墙获取json或jsonp

Jquery 如何在chrome中不出现mime错误的情况下从facebook页面墙获取json或jsonp,jquery,ajax,facebook,jsonp,Jquery,Ajax,Facebook,Jsonp,我看到过这样的帖子,显示你可以在公共Facebook页面的墙上看到一个JSON。 但他们没有给出一个有效的例子。我曾尝试使用$.ajax和jsonp获得它,但我在Chrome中得到了一个mime错误,在Safari中得到了一个不同的错误,在FireFox中得到了另一个不同的错误。我错过了什么 我已经创建了一个记录控制台的JSFIDLE,代码如下 $.ajax({ url: 'https://www.facebook.com/feeds/page.php?id=54971236771

我看到过这样的帖子,显示你可以在公共Facebook页面的墙上看到一个
JSON
。 但他们没有给出一个有效的例子。我曾尝试使用
$.ajax
jsonp
获得它,但我在Chrome中得到了一个mime错误,在Safari中得到了一个不同的错误,在FireFox中得到了另一个不同的错误。我错过了什么

我已经创建了一个记录控制台的JSFIDLE,代码如下

 $.ajax({
      url: 'https://www.facebook.com/feeds/page.php?id=54971236771&format=JSON',
      type: 'get',
      dataType: 'jsonp',
      error: function (jqXHR, textStatus, errorThrown) {
           console.log('Problem with call to get list of articles\n',errorThrown);
      },
      success: function (data) {
           console.log('call success, data is\n', data);
      }
 });

当前浏览器中禁止跨域JSON请求。JSON请求如下所示:

{ foo: 'bar' }
您得到的文件是纯JSON,在所有当前浏览器中都是禁止的。 但是JSONP是允许的。JSONP看起来像:

mycallback({ foo: 'bar' });
当您的url看起来像
https://www.facebook.com/feeds/page.php?id=54971236771&format=JSON
结果是JSON

要获得JSONP,您需要使用facebook API url,并且需要从facebook获得一个特殊的facebook API令牌:

https://graph.facebook.com/54971236771/feed?access_token=YOUR-TOKEN-GOES-HERE
实际的URL是这样的:

https://graph.facebook.com/54971236771/feed?access_token=YOUR-TOKEN-GOES-HERE&callback=jQuery110208932981239631772_1401824402598&_=1401824402599
整个代码如下:

$.ajax({
    url: 'https://graph.facebook.com/54971236771/feed?access_token=YOUR-TOKEN-GOES-HERE',
    type: 'get',
    dataType: 'jsonp',
    error: function (jqXHR, textStatus, errorThrown) {
        console.log('Problem with call to get list of articles\n', errorThrown);
    },
    success: function (data) {
        console.log('call success, data is\n', data);
    }
});

或者,通过使用graph API,您可以通过Google feed API等其他方式代理您的请求:

<script>
  function jsapi_loaded(){
    google.load("feeds", "1");

    function initialize() {
      var feed = new google.feeds.Feed(
        "https://www.facebook.com/feeds/page.php?format=rss20&id=54971236771"
      );
      feed.setNumEntries(10);
      feed.load(function(result) {
        if (!result.error) {
          console.log(result);
        }
      });
    }
    google.setOnLoadCallback(initialize);
  }
</script>
<script src="https://www.google.com/jsapi?callback=jsapi_loaded" async></script>

函数jsapi_loaded(){
加载(“提要”,“1”);
函数初始化(){
var feed=new google.feeds.feed(
"https://www.facebook.com/feeds/page.php?format=rss20&id=54971236771"
);
饲料.饲料(10);
feed.load(函数(结果){
如果(!result.error){
控制台日志(结果);
}
});
}
setOnLoadCallback(初始化);
}

另一个很好的答案。但我把绿色复选标记授予keiv,因为他先回答