javascript - 如何发出 jsonp 请求

标签 javascript json angularjs

我需要做一些跨站脚本。下面的代码块包含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请求,这样其他人就不会遇到和我一样的麻烦。

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;

     }  

注意 url 包含 ?callback=JSON_CALLBACKHere is a nice stackoverflow on that.收到响应后,您将收到如下所示的 json。

"angular.callbacks._1( {"cube":"1","points":"160"},{"cube":"2","points":"690"},{"cube":"3","points":"331"})"

Here is a nice stackoverflow on that subject

现在我遇到的问题是服务器必须返回 GET 参数,callback。这是一个很好的教程。 http://niryariv.wordpress.com/2009/05/05/jsonp-quickly/所以 json 看起来像上面的那个。

好吧,我希望这对以后的人有所帮助。

关于javascript - 如何发出 jsonp 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19916362/

相关文章:

json - Select2 ajax正确调用web服务,但之后什么也不做

php - JSON 常量表示它们在 Ubuntu 上的 PHP 5.5 中未定义

django - Angular Scenario Test Runner 显示页面但断言失败

javascript - AngularJS 1.2.21 forEach 与 ng-grid 不兼容?

javascript - NG-Repeat 生成包含动态类的列表

javascript - 制作从 html 到 ifttt 的触发器

javascript - 弹出图像不会停留在同一个地方

javascript - Angular JS 中的嵌套 View

javascript - JQuery onChange 获取之前的值

JavaScript:如何过滤深度 JSON 对象