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
方法被调用,找了很久也找不到解决办法,有么有高手能解答一下。
Answers
后端接口需要对 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 对象。