Angularjs JSONP 不起作用

标签 angularjs jsonp

我可能在这里遗漏了一些东西,但我无法使这个 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/

相关文章:

javascript - 在 jQuery 中使用命名函数作为 $.getJSON 的回调来满足 Facebook 请求签名需求

AngularJS - 如何在事件触发之前等待模板加载

java - 在开发期间向 Java EE 验证 AngularJS ("grunt serve"< >"JBoss")

javascript - $http 什么时候触发摘要循环开始?

javascript - Angular 4 的 JSONP 回调问题

jquery - 如何延迟加载或部分下载 json 文件?

.net - 使用 jsonp 和基于 SSL/HTTPS 的 .NET Web 服务进行跨域 AJAX

php - 为什么不重置与 $. Ajax ?

javascript - 基于日期的 Angular ui-grid 过滤为空或不为空

javascript - Json解码 “Trying to get property of non-object”错误