/ / Die json-Antwort kann nicht empfangen werden - jquery, ajax, json, jsonp

Nicht in der Lage, die JSON-Antwort zu bekommen - jquery, ajax, json, jsonp

    var myurl="https://raw.github.com/currencybot/open-exchange-rates/master/latest.json";

$.ajax(
{
url:myurl,
type:"POST",
dataType:"JSONP",
success:function(myObj)
{
console.log(myObj);
}
});

Ich habe versucht, die Kurzform getJSON zu verwenden, aber die Konsole gibt den Fehler "use POST request" aus. Unter Verwendung des obigen Codes gibt die Konsole "Invalid Label" an.

Antworten:

1 für die Antwort № 1

Benutzen $ .getJSON (), es ist Shorthand-Funktion und auch sehr effizient.

var myurl="https://raw.github.com/currencybot/open-exchange-rates/master/latest.json";

$.getJSON(
myurl,
function(data) {
//manipulate your json
});

Für die JSONP-Anforderung sollte der URL jedoch einen Rückrufparameter enthalten

Wie in der Dokumentation angegeben[Hier]

Wenn die URL die Zeichenfolge "callback =?" Enthält (oder ähnlich, wie von der serverseitigen API definiert), wird die Anforderung stattdessen als JSONP behandelt.


0 für die Antwort № 2

Sie sollten den Code ändern, versuchen Sie Folgendes:

$.post(
myurl,
{},
function(data){
alert(data);
},"json"
);

Die Variable "data" ist ein JSON-Objekt.


0 für die Antwort № 3

Domänenübergreifendes JSONP ist überhaupt kein AJAX. XMLHttpRequest wird nicht verwendet. Es ist nichts weiter als ein dynamisches Skriptelement, das JavaScript-Code lädt.

Versuchen:


var req = $.ajax({
url : myurl,
dataType : "jsonp"
});

req.success(function(myObj) {
console.log(myObj);
});

req.error(function() {
console.log("some error occured");
});

Ich denke, der End-Server "https: //raw.github.com "unterstützt JSONP nicht. Daher müssen Sie wahrscheinlich einen Proxy-Endpunkt auf Ihrem Server erstellen, um auf diese Daten zuzugreifen. Erstellen Sie im Grunde einen Endpunkt auf Ihrem eigenen Server, der diese Daten mit einer beliebigen Methode lädt (Wellung usw.). und gibt es genau so zurück, wie es ist. Dann kannst du reguläres AJAX verwenden. Hoffe, das hilft