Heim  >  Artikel  >  Web-Frontend  >  Assoziatives Ajax-Front-End-Array zu JSON zur Hintergrundmethode

Assoziatives Ajax-Front-End-Array zu JSON zur Hintergrundmethode

php中世界最好的语言
php中世界最好的语言Original
2018-03-16 10:28:442165Durchsuche

Dieses Mal werde ich Ihnen die Methode zum Konvertieren des assoziativen Arrays des Ajax-Frontends von JSON in das Backend vorstellen. Was sind die Vorsichtsmaßnahmen für die Konvertierung des assoziativen Arrays des Ajax-Frontends von JSON? Das Folgende ist ein praktischer Fall.

Viele Leute sind darauf gestoßen, dass Ajax beim Übergeben von Werten Arrays nicht direkt übergeben kann und die meisten davon auf Baidu nicht verwendet werden können

Also habe ich mir eine Methode überlegt:

Kapitel Schritt Erstens: Konvertieren Sie das Array in jsonstring

Dies ist ein technisches Problem. Baidu sagte, dass JSON.stringify(arr) keine assoziativen Arrays konvertieren kann, auch Indizes Arrays viele Mängel

Also habe ich speziell eine jsrekursive Funktion gekapselt

function arrToJSON(arr) {
    var json = {};
    for (var i in arr) {
        var vo=arr[i];
        if (typeof arr[i] == "object") {
            json[i]={};
            json[i] = arrToJSON(vo);
        } else {
            json[i] =vo;
        }
    }
    return JSON.stringify(json);
}

Solange Sie jsmehrdimensionales Array übergeben, kann alles analysiert werden Arrays in Strings

damit Werte in Ajax übergeben werden können~~~

Schritt 2:

Aber die auf diese Weise konvertierten JSON-Zeichen Der String ist unvollständig und Das gesamte Array kann nicht direkt analysiert werden

Wie in der Abbildung gezeigt

Assoziatives Ajax-Front-End-Array zu JSON zur Hintergrundmethode

Sie können feststellen, dass diese Funktion die Sub-JSON-Zeichenfolge der unteren Ebene angibt Verwenden Sie Schrägstriche, um zu entkommen. Je weiter Sie nach unten gehen, desto mehr Schrägstriche gibt es.

Wenn der Hintergrund json_decode die erste Ebene verarbeitet, ist die zweite Ebene tatsächlich immer noch eine json_decode-Zeichenfolge

Also der Hintergrund Benötigt eine neue Die Dekodierfunktion wird verwendet, um diesen JSON-String zu analysieren

/**
 * 解析前台传来的不完整json字符串
 */
private function json_decode_x($str)
{
    $data_arr = array();
    $arr = json_decode($str, 1);
    foreach ($arr as $x => $a) {
        if (preg_match('/":/', $arr[$x])) { //匹配
            $data_arr[$x] = $this->json_decode_x($a);
        } else {
            $data_arr[$x] = $a;
        }
    }
    return $data_arr;
}

In diesem Fall wird der JSON-String im Hintergrund empfangen und mit dieser Funktion analysiert, sodass ein vollständiges und korrektes mehrdimensionales Array erstellt werden kann erhalten

Da es für meine Geschäftsanforderungen keine Zeichenfolge wie /" gibt, können Sie damit feststellen, ob die Teilzeichenfolge noch eine JSON-Zeichenfolge enthält, die analysiert werden kann. Wenn sie in einem tatsächlichen Projekt verwendet wird, Bitte ändern Sie das reguläre Urteil

Natürlich können diejenigen, die dazu in der Lage sind, den ersten Schritt direkt in eine vollständige JSON-Zeichenfolge ändern, sodass der Hintergrund direkt einen json_decode zum Parsen verwenden kann

Ich glaube Ihnen Nachdem Sie den Fall in diesem Artikel gelesen haben, beherrschen Sie die Methode. Weitere spannende Artikel finden Sie auf der chinesischen Website.

Anleitung Verhindern Sie JS-Sprudeln und Browser-Standardverhalten

Wie wäre es mit JS? Aktualisieren Sie die übergeordnete Seite

JS- und Canvas-Kompositbilder zum Erstellen von WeChat-Postern für öffentliche Konten

Das obige ist der detaillierte Inhalt vonAssoziatives Ajax-Front-End-Array zu JSON zur Hintergrundmethode. 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