Jquery 如何在chrome中不出现mime错误的情况下从facebook页面墙获取json或jsonp
我看到过这样的帖子,显示你可以在公共Facebook页面的墙上看到一个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
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,因为他先回答