Heim >Web-Frontend >js-Tutorial >Analyse der Gründe, warum Ajax JSON-Daten als undefinierte_AJAX-bezogen erhält
Ajax ermöglicht den Datenabruf im Hintergrund, ohne die Anzeige und das Verhalten der Webanwendung zu beeinträchtigen. In diesem Artikel wird hauptsächlich der Grund vorgestellt, warum Ajax JSON-Daten als undefiniert erhält. Freunde, die sich für Ajax interessieren, können darauf verweisen:
Asynchrones JavaScript und XML (Ajax) treiben eine neue Generation von Websites voran (der beliebte Begriff ist Web). 2.0-Site) Schlüsseltechnologien. Ajax ermöglicht den Datenabruf im Hintergrund, ohne die Anzeige und das Verhalten der Webanwendung zu beeinträchtigen. Rufen Sie Daten mithilfe der XMLHttpRequest-Funktion ab, einer API, die es clientseitigem JavaScript ermöglicht, über HTTP eine Verbindung zu einem Remote-Server herzustellen. Ajax ist auch die treibende Kraft hinter vielen Mashups, die Inhalte von mehreren Orten in einer einzigen Webanwendung integrieren.
Im Allgemeinen verarbeiten wir den vom Server gesendeten JSON-Wert auf zwei Arten:
1. Eine besteht darin, die Funktion eval() zu verwenden. var dataObj=eval("("+data+")");
//In JSON-Objekt konvertieren (Hinweis: Daten sind JSON-Daten);
2. Verwenden Sie das Funktionsobjekt für die Rückgabeanalyse. var json =(new Function("","return "+data))();
Aber als ich heute an einem Projekt arbeitete (das Projekt verwendete Struts2), habe ich diese beiden Methoden zum Lesen von JSON verwendet und die Ausgabe war immer undefiniert. Ich habe viele Informationen im Internet überprüft, aber die meisten davon konnten nicht erklärt werden. Später fand ich einen Artikel, in dem der Autor ebenfalls auf diese Situation gestoßen ist. Seine Lösung bestand darin, den Rückgabewert als JSON-Attribut in der Aktion zu deklarieren. Nachdem er es an seinem eigenen Projekt getestet hatte, scheiterte es, dann bestand die Lösung darin, es erneut zu übertragen. Das Folgende ist meine eigene Meinung: Obwohl die aus dem Hintergrund übertragenen Daten als JSON-Attribut deklariert werden, handelt es sich bei der Übergabe an die Rezeption tatsächlich um eine Zeichenfolge und nicht um ein JSON-Objekt. Zu diesem Zeitpunkt müssen wir sie verarbeiten Daten im Hintergrund und konvertieren Sie sie in ein JSON-Objekt. Rufen Sie dann den Wert in JSON ab. Aber manchmal ist der vom Hintergrund übertragene Wert nicht unbedingt eine Standard-JSON-Formatzeichenfolge. Obwohl wir das vom Hintergrund übertragene Objekt mit einer der beiden vorherigen Methoden konvertieren, ist das zu diesem Zeitpunkt konvertierte JSON-Objekt tatsächlich immer noch eine Zeichenfolge Standard-JSON-String, und nachdem wir ihn erneut konvertiert haben, wird er zu einem JSON-Objekt.
Folgendes ist Teil des Codes:
result = JSONObject.fromObject(map).toString();//后台代码,将map转成json对象 success : function(result) {//前台返回值代码 var obj = eval("("+result+")"); //var data1 =(new Function("","return "+obj))(); var data1=eval("("+obj+")"); alert(data1.name); }
Zusammenfassung
Das Obige ist die vom Herausgeber eingeführte Analyse der Gründe, warum Ajax JSON-Daten als undefiniert erhält. Ich hoffe, sie wird für alle hilfreich sein! !
Verwandte Empfehlungen:
So implementieren Sie asynchrone synchrone Anforderungen in der AJAX-Nutzung
Wie natives JS AJAX und JSONP implementiert
Die verschiedenen Methoden von Ajax zum asynchronen Datei-Upload
Das obige ist der detaillierte Inhalt vonAnalyse der Gründe, warum Ajax JSON-Daten als undefinierte_AJAX-bezogen erhält. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!