2016-12-07 67 views
0

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

检查从服务器的响应 - 这很可能是你在服务器端错误。 – user2182349

+2

它更有可能从该URL获得HTML响应 –

+0

正确,它是HTML。我如何使它成为JSON? – adace1

回答

0

如果你看看the docs,你必须通过jsonp作为jsonpCallbackParam,使角使用正确的URL请求。它是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' 
}) 

角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" 
}}) 
+0

尝试了两种方式,并且它表示意外的令牌为':' – adace1

+0

浏览器控制台为请求显示的URL是什么? – Bergi

+0

http://www.distance24.org/route.json?stops=Beverly%20Hills,California|Auckland – adace1