2016-12-07 87 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