$ http.jsonp - 意外令牌'<'

时间:2016-12-07 01:01:05

标签: javascript angularjs json ajax jsonp

我能够从请求中获得响应,但我的代码的.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);});

1 个答案:

答案 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"
}})