Ich muss etwas sehr einfaches tun, aber es scheint nicht ein einfacher Weg, dies zu tun, soweit ich das beurteilen kann. Ich möchte nur JSON-Daten von einer Remote-Quelle laden und in einer globalen Javascript-Variable mit jQuery speichern. Folgendes habe ich:lade json in Variable
var my_json;
$.getJSON(my_url, function(json) {
var my_json = json;
});
Die Variable my_json bleibt undefiniert. Ich denke, das ist eindeutig ein Problembereich. Es scheint mir, dass die $ .getJSON-Methode JSON zurückgeben sollte, aber sie gibt ein XMLHttpRequest-Objekt zurück. Wenn ich dies tun:
request = $.getJSON(my_url);
my_json = request.responseText.evalJSON();
Das ist nicht, weil nicht funktioniert, bis die Readystate == 4 bleibt die response null. Es scheint, dass Sie die Callback-Funktion verwenden müssen, um den responsetext zurückzugeben, da er bei Erfolg ausgelöst wird.
Es kann nicht so schwer sein! Recht?
nur um zu meinem Vorteil zu klären: $ .getJSON ist nie eine gute Option für synchrone Stil Anforderungen, auch wenn ich Daten an meine Variable während des Erfolgs Callback zurückgeben? – user1026169
+1 für verwandte Informationen, aber warum machen Sie JSON Variable Null beim Start der Funktion. – Manoj
@Manoj Es gibt 2 Gründe [1] dieser Block kann innerhalb einer Methode sein und mehrfach aufgerufen werden. Daher würde dies die Json-Variable aktualisieren. Aber wenn die Ajax-Anfrage das sowieso aktualisieren wird, was ist der Punkt? Nun, das ist, weil ... [2] Dies ist eine Kodierungskonvention, falls die Ajax-Anfrage fehlschlägt, dann kann der Benutzer testen, ob Json null ist. Wenn dies der Fall ist, kann davon ausgegangen werden, dass die Ajax-Anforderung fehlgeschlagen ist. –