我可能在这里遗漏了一些东西,但我无法使这个 JSONP 请求工作,这是代码:
var url = 'http://' + server + '?callback=JSON_CALLBACK';
$http.jsonp(url)
.success(function(data){
console.log('success');
})
.error(function () {
console.log('error')
});
请求触发正常,我收到以下格式的响应(带有标题 Content-Type:application/json):
[{"id": "1", "name": "John Doe"},
{"id": "2", "name": "Lorem ipsum"},
{"id": "3", "name": "Lorem ipsum"}]
你能看出有什么不对吗?也许我应该从服务器返回的格式不对?
Angular 会触发错误回调,除了我设置的错误消息('error')之外没有任何错误消息。
最佳答案
JSONP要求您将数据包装到 JavaScript 函数调用中。因此,从技术上讲,您返回的是 JavaScript 文件而不是 Json 文件。
从服务器返回的数据应该类似于:
// the name should match the one you add to the url
JSON_CALLBACK([
{"id": "1", "name": "John Doe"},
{"id": "2", "name": "Lorem ipsum"},
{"id": "3", "name": "Lorem ipsum"}
]);
编辑 :如果其他人偶然发现了 Angular 的 JSONP 问题,请同时阅读 this answer to this question ,它包含有关 angular 如何处理实际回调函数的有用信息。
关于Angularjs JSONP 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16344933/