Ajax: Почему успех показывает 0? - PullRequest
16 голосов
/ 20 марта 2011

Я использую 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);
          }
   });

Ответы [ 9 ]

35 голосов
/ 14 ноября 2012

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

12 голосов
/ 04 сентября 2013

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

add_action ('wp_ajax_nopriv_my_action', 'my_action_callback');

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

9 голосов
/ 14 октября 2012

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

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

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

7 голосов
/ 21 марта 2011

Нашли.

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

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

5 голосов
/ 13 июня 2014

Я неправильно добавил «действие». Вы должны префикс вашего действия с wp_ajax_gd_.

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

и в посте JS jQuery:

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

Мне показалось, что документация Wordpress очень неясна в этой части.

3 голосов
/ 20 марта 2011

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

2 голосов
/ 29 марта 2016

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

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

function doAjax() {
    $result = getPosts();
    echo json_encode($result, true);
    die();
}
2 голосов
/ 20 июня 2013

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

1 голос
/ 31 января 2014

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...