所以我想做出堆栈交易所API的请求与以下jQuery代码:JSONP请求返回错误:“未捕获的SyntaxError:意外的标记:”
$.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!
我没有一个线索是怎么回事。我知道堆栈交换API Gzips其反应,这会造成麻烦吗?
你从服务器得到什么:从调用URL
结果?我得到了JSON - 而JSON不是JSON-P,它将数据封装在一个回调函数中,该回调函数必须位于全局名称空间中,以及您在请求中告诉服务器的内容(在代码中看不到的其他内容)。关键是,只是不要告诉你的jQuery结果是JSONP,如果它真的是JSON。 – 2011-05-18 14:06:48
我使用JSONP是因为它是在StackOverflow的其他地方提出的。当我使用JSON时,出现以下错误:XMLHttpRequest无法加载http://api.stackoverflow.com/1.1/stats。 Origin-null不被Access-Control-Allow-Origin所允许。“ – theabraham 2011-05-18 14:08:33
不知道他们的API,但是正如我所说的那样,从那个URL清楚地返回的是JSON。使用“dataType”你只告诉你的jQuery *如何解释结果,你不告诉* server *你想要JSONP。 – 2011-05-18 14:11:16