Ich bin ziemlich neu im Umgang mit http-Promise-Objekten.
Ich verwende Angular JS, um Json von einer API http://www.asterank.com/api zurückzugeben.
Ich habe einen Angular-Controller, der den Aufruf wie folgt macht:
$http.jsonp('http://www.asterank.com/api/asterank?query={%22e%22:{%22$lt%22:0.1},%22i%22:{%22$lt%22:4},%22a%22:{%22$lt%22:1.5}}&limit=1&callback=JSON_CALLBACK').
success( function(data) {
console.log('großer Erfolg');
}).error( function(r,t,et){
console.log(r);
console.log(t);
console.log(et);
});
Wenn ich den Netzwerkmonitor von Chrome überprüfe, sehe ich die Antwort:
HTTP/1.1 200 OK
Date: Sun, 06 Oct 2013 19:06:26 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Server: gunicorn/18.0
Set-Cookie: session=eyJkaXNjb3Zlcl9maXJzdF90aW1lIjpmYWxzZX0.BTNGMg.eF89vHEeIpLH8sZiJOwCAJEjPhA; HttpOnly; Path=/
Content-Encoding: gzip
Aber ich sehe die Fehlermethode ausgelöst werden, nie den Erfolg :(
Liegt das einfach daran, dass der Server JSONP nicht unterstützt? Wie greifen Sie auf die Daten dieser APIs zu, wenn sie JSONP nicht unterstützen, aber JSON unterstützen?
Eine schöne Lösung gefunden:
Falls jemand auf dieses Problem stößt und wie ich EXPRESS verwende, können Sie einfach eine kleine API auf Ihrem Server erstellen, indem Sie dies verwenden:
https://npmjs.org/package/request
Hier muss ich nicht einen ganzen Proxyserver hochfahren, aber Sie können die JSON-Daten von Ihrem Server anfordern.