我可能在这里遗漏了一些东西,但我无法使这个 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 触发错误回调,除了我设置的错误消息(“错误”)之外,没有任何错误消息。
@TheHippo 是正确的,数据不应该只是一个普通的 json 响应。这是一个工作示例 http://jsfiddle.net/FDH8D/AngularJS 中针对 youtube 端点的 JSONP 请求。
在此示例中需要注意以下几点:
- 角的$http.jsonp http://docs.angularjs.org/api/ng.%24http#jsonp将请求查询字符串参数从
callback=JSON_CALLBACK
to callback=angular.callbacks._0
.
- 调用 youtube 端点时,我需要使用以下命令向服务指定这是一个 JSONP 请求
alt=json-in-script
代替alt=json
在查询字符串中。这是在他们的文档。 https://developers.google.com/youtube/2.0/developers_guide_protocol_api_query_parameters
- 比较结果this url https://gdata.youtube.com/feeds/api/users/orbitalofficial/uploads?alt=json to 查看浏览器中 JSON 和 JSONP 响应之间的差异。
- 看看Chrome 网络面板 https://developers.google.com/chrome-developer-tools/docs/network开发人员工具中可帮助对您的请求/响应进行比较和故障排除。
我知道这个例子非常具体,但希望它能有所帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)