Почему WordPress добавляет 0 (ноль) к ответу Ajax?


16

Если я не заканчиваю функцию обработки Ajax с помощью exit()или die(), функция Ajax получает желаемый и правильный вывод, но после 0.

Есть идеи, почему это происходит?

Это должно быть так или это можно исправить?

add_action('wp_ajax_get_homepage', 'get_homepage');
add_action('wp_ajax_nopriv_get_homepage', 'get_homepage');

function get_homepage(){
    echo "get_homepage ->";
    exit();
}

Я читал на AJAX в плагинах , но зачем это нужно?


Это происходит (добавление 0), даже если вы вышли из WordPress?
Murdaugh

Да, даже если я не вошел в WordPress.
Радек

Ответы:


31

Ответ по умолчанию от admin-ajax.phpесть,

die( '0' );

... добавив свой собственный wp_die()или exit()или die()после возврата желаемого контента, вы также не сможете получить ответ по умолчанию admin-ajax.php.

Это также обычно означает, что ваш вызов ajax успешно выполнен.

В конечном итоге, чтобы ответить на ваш вопрос, он должен работать именно так. То, что вы делаете, выходя после возвращения вашего контента, это то, что нужно делать.


Спасибо за объяснение. Так я использую die () или я проверяю внутри ajax для 0, чтобы знать, что все было в порядке?
Радек

2
Используйте die()или exit()после того, как вы повторили свой контент / данные. В success/completeфункции обратного вызова вашего ajax-метода вы можете манипулировать данными и использовать их для заполнения DOM. Вы также можете выполнить любую дополнительную проверку ошибок для проверки целостности данных. Вы также можете выполнить проверку ошибок в вашей функции обратного вызова PHP перед выводом. По сути, выход после возвращения вашего ответа гарантирует, что вы также не ладите 0с ним. Кстати, только то, что вы получили 0ответ, не означает, что ваш вызов ajax был на 100% успешным. Однако это легко сказать, когда вы проверяете свою продукцию.
Адам

1
Вы должны использовать wp_die()добавленный в 2.0.4
thrillcode

@thrillcode, если вам не нужно выставлять процесс wp_dieдругим плагинам или коду темы, которые могут подключаться к указанному процессу, тогда, используя dieили exitвсе в порядке. Если вы намереваетесь выпустить свой код как OSS или как-то иначе, когда ваш код должен хорошо взаимодействовать с другими, тогда wp_dieбыло бы более предпочтительным, согласились.
Адам
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.