Was kann schief gehen, wenn ich die();
nach der Funktion, die eine Ajax-Anfrage verarbeitet, nicht verwende?
Ich habe festgestellt, dass fast der gesamte WordPress Ajax-basierte Code ihn verwendet.
Wenn Sie dies nicht tun die
, wird die Ausführung fortgesetzt und möglicherweise eine zusätzliche Ausgabe generiert, die möglicherweise alle Informationen beschädigt, die Sie vom Server an den Browser senden möchten. Genau genommen müssen Sie das vielleicht nicht die
, aber es macht wenig Sinn, das Risiko einzugehen.
Allgemeiner ausgedrückt zeigt WordPress Ajax sein Alter und den Mangel an Erfahrung bei der Arbeit mit Ajax, als es entwickelt wurde. Sie sollten stattdessen die WordPress-JSON-Routen verwenden, da diese eine bessere URL-Struktur haben können und die Programmierstruktur logischer und modularer ist.
admin-ajax.php
Fügt immer eine Ausgabe hinzu, wenn die Anforderung nicht gestoppt wird.die
Wenn der Aufrufer des AJAX die Ausgabe nicht ignoriert, ist dies grundsätzlich erforderlich, auch wenn der Wrapperwp_die
bevorzugt werden sollte, da eine Funktion, die enthält,die
so gut wie unmöglich zu testen ist.WordPress sollte dies nicht erfordern und deutet auf schlechte Codierungspraktiken hin.
Wenn Sie eine Ajax-Anfrage stellen, sollte die angeforderte URL eine Antwort mit den erforderlichen Daten generieren (und auch die richtigen Header festlegen, um anzugeben, um welchen Datentyp es sich handelt, z. B. JSON). In der Antwort sollte nichts anderes als die erforderliche Ausgabe angegeben werden.
Ich arbeite die ganze Zeit mit PHP und JavaScript - obwohl ich kein WordPress-Entwickler bin - und war amüsiert über den Titel dieser Frage. Wenn WordPress das tut, ist das schrecklich. Wie in der akzeptierten Antwort angegeben, ist dies wahrscheinlich eine Möglichkeit, zu verhindern, dass weitere Ausgaben in die Antwort aufgenommen werden. Aber natürlich sollte diese "weitere Ausgabe" niemals Teil der Antwort sein.
quelle
die
(oder umschließenwp_die
), fügt WP ein hinzu"0"
, das den JSON beschädigt und das korrekte Parsen durch den Aufrufer verhindert (wahrscheinlich js). Also, ja, ich stimme zu, dass man in einer gut entwickelten Anwendung nicht sterben muss; in WordPress andererseits ...die()
ist nicht erforderlich und würde in einer gut geschriebenen PHP-Anwendung niemals vorkommen. Analogien des CPU-Codes sind irrelevant und zeigen einen völligen Mangel an Verständnis. Vielleicht ist Ihre Definition von "schrecklich" und meine unterschiedlich. Ich benutze WP nicht, weil es mit so einem Unsinn übersät ist. Ich codiere (richtig) die ganze Zeit in PHP und versuche aus PHP-Sicht zu helfen. Sie können entweder akzeptieren, dass WP dies - und viele andere Dinge - völlig falsch verstanden hat. Da dies ein WP-Stack ist, fällt es den Fans wohl schwer.