2016-12-07 1 views
0

Je peux obtenir une réponse de la requête mais la partie .then() de mon code ne se déclenche pas. Qu'est-ce que je fais mal?

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

Vérifiez la réponse du serveur - il est probable que vous avez une erreur sur le côté serveur. – user2182349

+2

il est en outre plus probable que vous obtenez une réponse HTML de cette URL –

+0

Correct, c'est HTML. Comment puis-je le rendre JSON? – adace1

Répondre

0

Si vous avez un oeil à the docs, vous devrez passer jsonp comme jsonpCallbackParam de telle sorte que angulaire utilise l'URL de requête correcte. C'est le nom du paramètre GET, pas le nom de la fonction de rappel. En outre, le chemin est route.json et non route.jsonp.

$http.jsonp("http://www.distance24.org/route.json?stops="+city+"|"+country, { 
    jsonpCallbackParam: 'jsonp' 
}).then(function(data) { 
    console.log(data); 
    alert(data.distance); 
}); 

Vous pouvez également utiliser

$http.jsonp("http://www.distance24.org/route.json", { 
    params: {stops: city+"|"+country}, 
    jsonpCallbackParam: 'jsonp' 
}) 

Avant v1.6 angulaire, il n'y avait pas de valeur de configuration jsonpCallbackParam. Au lieu de cela vous utiliseriez

$http.jsonp("http://www.distance24.org/route.json?jsonp=JSON_CALLBACK&stops="+city+"|"+country) 

ou

$http.jsonp("http://www.distance24.org/route.json", {params: { 
    "stops": city+"|"+country, 
    "jsonp": "JSON_CALLBACK" 
}}) 
+0

Essayé dans les deux sens et il dit que le jeton inattendu est ':' – adace1

+0

Quelle est l'URL de votre console de navigateur vous montre pour la demande? – Bergi

+0

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