thinkphp echo return gibt JSON-Datenproblem zurück

WBOY
Freigeben: 2016-08-04 09:19:24
Original
1825 Leute haben es durchsucht

Heute habe ich an einem Plug-in für die automatische Vervollständigung von JQuery herumgebastelt
Ich habe Ajax verwendet, um die Dropdown-Daten aus dem Hintergrund abzurufen, und dann war es eine Nervensäge
Zuallererst verwende ich das thinkphp-Framework
Zuerst muss ich JSON-Daten zurückgeben
Dann habe ich return json_encode($end,JSON_UNESCAPED_UNICODE);
verwendet und das Ergebnis war, dass das Front-End-JS-Plug-in ständig einen Fehler meldete, was wahrscheinlich bedeutete, dass das Die zurückgegebenen JSON-Daten waren illegal
Nachdem ich lange daran herumgebastelt hatte, habe ich versucht, echo json_encode($end,JSON_UNESCAPED_UNICODE);
zu verwenden, und das Ergebnis ist immer noch ein Rätsel. Könnten Sie das bitte genau erklären? das Gleiche, aber es gibt ein Echo und eine Rückkehr. Wie kann es einen Unterschied geben?

Antwortinhalt:

Heute habe ich an einem Plug-in zur automatischen Vervollständigung von JQuery herumgebastelt
Ich habe Ajax verwendet, um die Dropdown-Daten aus dem Hintergrund abzurufen, und dann war es eine Nervensäge
Lass es mich zunächst einmal Erklären Sie, dass ich das Thinkphp-Framework verwende
Zuerst muss ich JSON-Daten zurückgeben
Dann habe ich return json_encode($end,JSON_UNESCAPED_UNICODE);
verwendet und das Ergebnis war, dass das Front-End-JS-Plug-In ständig einen Fehler meldete bedeutete wahrscheinlich, dass die zurückgegebenen JSON-Daten illegal waren.
Nachdem ich dann lange daran herumgebastelt hatte, versuchte ich, echo json_encode($end,JSON_UNESCAPED_UNICODE);
zu verwenden, und das Ergebnis funktionierte tatsächlich. Könnten Sie es bitte erklären? Die Dinge sind genau die gleichen, aber es gibt ein Echo und eine Rückkehr. Wie kann es einen Unterschied geben?

Der JS-Rückruf erfordert einen Wert, und PHP muss nur einen JSON-String ausgeben, bevor es ihn empfangen kann.
Dies ist das http-Protokoll, das Konzept des Sendens von Anfragen und des Empfangens von Antworten. Der von der Antwort zurückgegebene Inhalt muss einen Wert enthalten. Es kann nur über Ajax abgerufen werden.
Die Anweisung, dass PHP den JSON-String so ausgibt, wie er ist, ist echo und die Funktion ist exit()die()
Was die Rückgabe der Controller-Ebene in thinkphp betrifft. Bin gerade zur Thinkphp-Core-Controller-Klasse zurückgekehrt. Wenn der Controller schließlich keine Ausgabe ausgibt, ist der Antwortinhalt leer.

SF hatte schon einmal eine ähnliche Frage: der Unterschied zwischen Echo und Return
Lassen Sie es mich noch einmal sagen:

return gibt Ergebnisse an das PHP-Programm zurück.
echo ist die Ajax-Antwort.

Ich bin wirklich betrunken. Der Autor hat gesehen, dass das Front-End-JS falsch war. Könnte er sich nicht den Rückgabewert von Ajax ansehen? Ist es nicht offensichtlich, wo das Problem liegt?

Der richtige Ansatz sollte sein

<code class="php">exit(json_encode($end,JSON_UNESCAPED_UNICODE));</code>
Nach dem Login kopieren

return wird in der Funktion zurückgegeben.
echo wird auf der Seite ausgegeben.

TP verfügt über eine $this->ajaxReturn();-Methode, die direkt verwendet werden kann.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage