Чому 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, якщо вам не потрібно виставляти процес wp_dieіншим плагінам або коду теми, який може підключитися до зазначеного процесу, використовуючи dieабо exitнормально. Якщо ви маєте намір випустити свій код як OSS або іншим чином, коли ваш код повинен добре грати з іншими, тоді wp_dieбуло б краще, погоджено.
Адам
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.