Ajax: Почему успех показывает 0?

Я использую ajax с jquery и когда пытаюсь отобразить результат во всплывающем окне. Затем предупреждение всегда отображает 0

success : function(results) { 
alert(results); }

ИЗМЕНИТЬ:

 var dataToSend = {
    action:"ACTION_NAME",
    id : "12"
  };
  url_action = 'http://www.______.com/wp-admin/admin-ajax.php';
  $.ajax({
          url: url_action,
          type:'POST',
          data: dataToSend,
          success:function(results)
          {
             alert(results);
          }
   });

Ответы

Ответ 1

Попробуйте добавить die(); или exit(); в самую последнюю строку функции.

Ответ 2

Возможно, вы пытаетесь без входа. поэтому вам нужно использовать это действие.

add_action ('wp_ajax_nopriv_my_action', 'my_action_callback');

вы получите ответ.:)

Ответ 3

У меня была аналогичная проблема с admin-ajax.php, возвращающим 0, даже у меня была die().

Моя проблема заключалась в том, что add_action был объявлен в файле, не загруженном по умолчанию плагином.

В любом случае, если у вас есть проблема, также проверьте в браузере, что возвращает __.com/wp-admin/admin-ajax.php?action=youraction.

Ответ 4

Нашел.

Нужно добавить die(); до конца моей собственной функции ajax в function.php.

Потому что есть одна строка script в admin-ajax.php после моего собственного ajax_action, в котором говорится: die ('0'); Поэтому перед смертью ('0') нам нужно die() script.

Ответ 5

Я добавил "действие" неправильно. Вы должны префиксное действие с помощью wp_ajax_gd_.

add_action('wp_ajax_gd_[ACTION NAME]', '[CALLBACK FUNCTION NAME]')

и в сообщении JS jQuery:

var data = {
    'action': '[ACTION NAME]',
};

Я нашел документацию Wordpress очень неясной об этой части.

Ответ 6

Вероятно, потому что серверная сторона script, вызываемая с AJAX, возвращает 0 (тот, который вы указали в свойстве url).

Ответ 7

Убедитесь, что имя action файла в порядке. Если он не найден в functions.php, в результате вы получите 0.

Ответ 8

У меня была такая же проблема. Я забыл включить плагин. После включения плагина я получил ожидаемые данные.

Ответ 9

В вашей функции PHP убедитесь, что вы используете echo вместо return.

Это происходило для меня в теме WordPress.

function doAjax() {
    $result = getPosts();
    echo json_encode($result, true);
    die();
}