O ile nie zakończę funkcji przetwarzania Ajax przez exit()
lub die()
, funkcja Ajax otrzymuje pożądane i prawidłowe dane wyjściowe, ale następuje po nich 0
.
Wiesz, dlaczego tak się dzieje?
Czy to ma tak być, czy może być naprawione?
add_action('wp_ajax_get_homepage', 'get_homepage');
add_action('wp_ajax_nopriv_get_homepage', 'get_homepage');
function get_homepage(){
echo "get_homepage ->";
exit();
}
Czytałem w AJAX we wtyczkach , ale dlaczego jest to konieczne?
Odpowiedzi:
Domyślną odpowiedzią
admin-ajax.php
jestdie( '0' );
... dodając własne
wp_die()
lubexit()
lubdie()
po powrocie żądanej zawartości uniemożliwia odpowiedź domyślną zadmin-ajax.php
zwracane, jak również.Ogólnie oznacza to również, że wywołanie ajax zakończyło się powodzeniem.
Ostatecznie, aby odpowiedzieć na twoje pytanie, ma to działać w ten sposób. To, co robisz, wychodząc po zwróceniu treści, jest właściwe.
źródło
die()
lubexit()
po odtworzeniu echa treści / danych. Wsuccess/complete
funkcji wywołania zwrotnego metody ajax możesz następnie manipulować danymi i użyć ich do wypełnienia DOM. Możesz także wykonać dodatkowe sprawdzenie błędów, aby sprawdzić integralność danych. Możesz również sprawdzić błędy w funkcji zwrotnej PHP przed wyjściem. Zasadniczo wyjście po zwróceniu twojej odpowiedzi sprawi, że nie zgodzisz się0
z nią. Nawiasem mówiąc, tylko dlatego, że otrzymasz0
odpowiedź, nie oznacza, że Twoje wywołanie ajax zakończyło się powodzeniem w 100%. Łatwo jest jednak stwierdzić, kiedy sprawdzasz wyniki.wp_die()
dodanego w wersji 2.0.4wp_die
innym wtyczkom lub kodowi motywu, który może się przyczepić do tego procesu, wtedy użyciedie
lubexit
jest w porządku. Jeśli masz zamiar wydać swój kod jako OSS lub w inny sposób, w którym Twój kod musi się ładnie bawić z innymi,wp_die
byłoby to bardziej korzystne, uzgodnione.