AngularJS 用 $http.jsonp 方法跨域请求数据错误的问题


以前知道 AngularJS 是个什么东西,今天刚开始动手尝试,遇到了这个问题。

代码如下:


 $http.jsonp("https://request.address.json?callback=JSON_CALLBACK")
    .success(
        function(data, status, header, config){
            $scope.list = data;
            alert(data);
        }
    )
    .error(
        function(data){
            alert("error");
        }
    );

访问后通过浏览器的开发者工具能看到返回的状态码是200,并且能看到返回的 json 字符串,但是执行后总是 error 方法被调用,找了很久也找不到解决办法,有么有高手能解答一下。

jsonp angularjs

五星宝具加一 10 years, 9 months ago

后端接口需要对 jsonp 的请求做特殊的处理,请求带了 callback 的参数:

图片描述

返回应该是一段 JavaScript 代码:


 angular.callbacks._0({
    "longitude": 120.1614,
    "latitude": 30.2936,
    "asn": "AS4837",
    "offset": "8",
    "ip": "60.12.58.161",
    "area_code": "0",
    "continent_code": "AS",
    "dma_code": "0",
    "city": "Hangzhou",
    "timezone": "Asia\/Shanghai",
    "region": "Zhejiang",
    "country_code": "CN",
    "isp": "CNCGROUP China169 Backbone",
    "country": "China",
    "country_code3": "CHN",
    "region_code": "02"
});

这个和 JSONP 可以跨域的特新相关,JSONP 是使用 script tag 作为请求的载体的;而 Ajax 是通过 XHR 对象。

肛之练精速湿 answered 10 years, 9 months ago

贴出返回的json看看

香辣盾蟹不加料 answered 10 years, 9 months ago

Your Answer