Heim >Web-Frontend >js-Tutorial >Analyse der Gründe, warum Ajax JSON-Daten als undefinierte_AJAX-bezogen erhält

Analyse der Gründe, warum Ajax JSON-Daten als undefinierte_AJAX-bezogen erhält

韦小宝
韦小宝Original
2017-12-16 14:24:492128Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn