我能够从请求中获得响应,但我的代码的.then()部分不会触发。我做错了什么?
window.distance24Result = function(data){ alert(data.distance); };
$http.jsonp("http://www.distance24.org/route.jsonp?stops="+city+"|"+country,{data:'jsonp',
jsonpCallbackParam: 'distance24Result'
})
.then(function(data){console.log(data);});
答案 0 :(得分:0)
如果您查看the docs,则必须将jsonp
作为jsonpCallbackParam
传递,以便Angular使用正确的请求网址。它是GET参数的名称,而不是回调函数的名称。此外,路径为route.json
而不是route.jsonp
。
$http.jsonp("http://www.distance24.org/route.json?stops="+city+"|"+country, {
jsonpCallbackParam: 'jsonp'
}).then(function(data) {
console.log(data);
alert(data.distance);
});
或者,您也可以使用
$http.jsonp("http://www.distance24.org/route.json", {
params: {stops: city+"|"+country},
jsonpCallbackParam: 'jsonp'
})
在Angular v1.6之前,没有jsonpCallbackParam
配置值。相反,你要使用
$http.jsonp("http://www.distance24.org/route.json?jsonp=JSON_CALLBACK&stops="+city+"|"+country)
或
$http.jsonp("http://www.distance24.org/route.json", {params: {
"stops": city+"|"+country,
"jsonp": "JSON_CALLBACK"
}})