【发布时间】:2011-05-18 14:03:29
【问题描述】:
所以我正在尝试使用以下 jQuery 代码向 Stack Exchange API 发出请求:
$.ajax({
type: 'POST',
url: 'http://api.stackoverflow.com/1.1/stats',
dataType: 'jsonp',
success: function() { console.log('Success!'); },
error: function() { console.log('Uh Oh!'); }
});
但是当我在我的机器上打开文件时,无论是在 FireFox 还是 Chrome 中,并发出请求,我都会收到以下错误:
Resource interpreted as Script but transferred with MIME type application/json.
Uncaught SyntaxError: Unexpected token :
Uh Oh!
我不知道发生了什么。我知道 Stack Exchange API 会压缩它的响应,这会造成任何麻烦吗?
【问题讨论】:
-
你从服务器得到什么?我得到 JSON - JSON 不是 JSON-P,它将数据封装在一个回调函数中,该函数必须在您的全局命名空间中,并且您在请求中告诉服务器(我在您的代码中没有看到的其他内容) )。关键是,如果真的是 JSON,就不要告诉你的 jQuery 结果是 JSONP。
-
我使用了 JSONP,因为它在 StackOverflow 的其他地方被建议。当我使用 JSON 时,出现此错误:
XMLHttpRequest cannot load http://api.stackoverflow.com/1.1/stats. Origin null is not allowed by Access-Control-Allow-Origin. -
不知道他们的 API,但正如我所说,从该 URL 返回的显然是 JSON。使用“dataType”你只告诉你的jQuery如何解释结果,你不会告诉服务器你想要JSONP。
标签: javascript ajax jquery stackexchange-api