Sofern ich die Ajax-Verarbeitungsfunktion nicht mit exit()
oder die()
beende, erhält die Ajax-Funktion die gewünschte und korrekte Ausgabe, folgt jedoch mit 0
.
Irgendeine Idee, warum das passiert?
Soll das so sein oder könnte es behoben werden?
add_action('wp_ajax_get_homepage', 'get_homepage');
add_action('wp_ajax_nopriv_get_homepage', 'get_homepage');
function get_homepage(){
echo "get_homepage ->";
exit();
}
Ich habe bei AJAX in Plugins gelesen , aber warum ist das notwendig?
Antworten:
Die Standardantwort von
admin-ajax.php
lautet:die( '0' );
... durch Hinzufügen Ihres eigenen
wp_die()
oderexit()
oderdie()
nach der Rücksendung Ihres gewünschten Inhalts wird verhindert, dass die Standardantwort ebenfallsadmin-ajax.php
zurückgesendet wird.Dies bedeutet im Allgemeinen auch, dass Ihr Ajax-Anruf erfolgreich war.
Um Ihre Frage zu beantworten, sollte es letztendlich so funktionieren. Was Sie tun, indem Sie nach der Rückgabe Ihrer Inhalte beenden, ist das Richtige.
quelle
die()
oderexit()
nachdem Sie Ihre Inhalte / Daten wiedergegeben haben. In dersuccess/complete
Rückruffunktion Ihrer Ajax-Methode können Sie dann die Daten bearbeiten und zum Auffüllen des DOM verwenden. Sie können auch zusätzliche Fehlerprüfungen durchführen, um die Datenintegrität zu überprüfen. Sie können auch vor der Ausgabe in Ihrer PHP-Callback-Funktion eine Fehlerprüfung durchführen. Wenn Sie nach dem Zurücksenden Ihrer Antwort im Wesentlichen beenden, stellen Sie sicher, dass Sie nicht auch damit0
einverstanden sind. Nur weil Sie eine0
Antwort erhalten, heißt das übrigens nicht, dass Ihr Ajax-Anruf zu 100% erfolgreich war. Es ist jedoch leicht zu erkennen, wann Sie Ihre Ausgabe überprüfen.wp_die()
in 2.0.4 hinzugefügt werdenwp_die
anderen Plugins oder Themencodes aussetzen, die sich in den Prozess einbinden können. Dann ist die Verwendung vondie
oderexit
in Ordnung. Wenn Sie beabsichtigen, Ihren Code als OSS oder auf andere Weise freizugeben, wo Ihr Code mit anderen gut spielen muss, dannwp_die
wäre es vorzuziehen, zugestimmt.