【发布时间】:2013-11-23 20:17:34
【问题描述】:
我需要编写一些跨站点脚本。下面的代码块包含jsonp的方法,该方法返回好像失败了,但是当我将其更改为get请求时,我就成功了。我需要能够使用 jsonp 方法成功响应。可以排除以下情况。响应是有效的 json,这个参数在 url ?callback=JSON_CALLBACK 中。这是我从执行 http 请求和执行此代码的代码块中收到的 json。
http响应状态码200
[{"cube":"1" ,"points":"160"},{"cube":"2","points":"690"},{"cube":"3","points":"331"}]
代码块
var myApp = angular.module('test', []);
myApp.controller('UserCtrl', function($scope, users) {
$scope.usersPerCube = users.getUsers();
})
myApp.factory('users', function($http) {
return {
getUsers: function() {
var deferred = $q.defer();
var url = "http://localhost/api/api/index.php/analytics/UsersPerCube?callback=JSON_CALLBACK";
$http.get(url).success(function (data, status, headers, config) {
console.log(data);
deferred.resolve(data);
}).error(function (data, status, headers, config) {
//this always gets called
console.log(status);
deferred.reject(status);
});
return deferred.promise;
}
}
请注意,我已经编辑了我的服务器端代码,现在收到了
"angular.callbacks._1( {"cube":"1","points":"160"},{"cube":"2","points":"690"},{"cube":"3","points":"331"})"
更新 以上是有效的,现在成功方法正在执行。我只需要弄清楚如何解析对象。等我找到答案再发帖。
【问题讨论】:
-
您请求的服务器是否理解 JSONP(尤其是
callback查询字符串值)? -
如果您的响应是有效的 JSON,那么它不是有效的 JSONP。 JSONP 是用函数包装的 JSON 数据。对于@Alxandr,您确定要返回 JSONP 吗?
-
我拥有这个堆栈溢出所建议的一切,以使其在服务器端成为有效的 jsonp。 stackoverflow.com/questions/9519209/how-do-i-set-up-jsonp 。还有 angular.callbacks._1 的角度响应,这意味着它将其识别为 jsonp。我只是不确定现在应该如何处理回复。
标签: javascript json angularjs