Администратор Ajax возвращается 0

Я относительно плохо знаком с jQuery и Ajax в частности. У меня есть маленькая проблема с возвращаемым значением, всегда являющимся 0, хотя я думаю, что это - на самом деле сообщение успеха, и это ничего не возвращает.

Я обыскивал стих Google, и у меня есть умирание () функция на обратном вызове PHP, и я полагаю, что add_actions корректны.

Я работаю над локальным хостом, хотя я сомневаюсь, что влияет на него, и это - все в администраторе, не фронтэнде. Я также проверил, что js ставится в очередь и локализуется.

Я получаю 200 хорошо сообщение в хромовой области разработчика.

Я также проверил основной Ajax из http://codex.wordpress.org/AJAX_in_Plugins, и он также возвратился 0, который заставляет меня задаться вопросом, является ли это что-то другое, чем код, обрисованный в общих чертах ниже.

Прямо сейчас я просто пытаюсь заставить его передать что-то обратно jQuery. Любая справка ценилась бы.

JQuery

jQuery(document).ready(function(){
    jQuery('.cl_link_buttons').val('id').click(function() {

            var currentid = jQuery(this).attr('id');

            //alert(currentid);
            console.log(currentid);

            jQuery.ajax ( data = {
                action: 'cleanlinks_ajax_get_post_data',
                url: ajaxurl,
                type: 'POST',
                dataType: 'text',
                "currentid" : currentid

            });

            jQuery.post(ajaxurl, data, function(response) {

                var dataz = response;
                alert( dataz );
                console.log (dataz); //show json in console


            });

            return false;

    }); //end click event
}); //end doc ready

PHP

add_action("wp_ajax_cleanlinks_ajax_get_post_data", "cleanlinks_ajax_get_post_data");
add_action("wp_ajax_nopriv_cleanlinks_ajax_get_post_data", "cleanlinks_ajax_get_post_data");

function cleanlinks_ajax_get_post_data() {

$from_ajax =  $_POST['currentid'];

echo "do" . $from_ajax . "something";

die();


}
29
27.04.2013, 18:02
6 ответов

Таким образом, я разработал его. Это не был jQuery как таковой, хотя я улучшил это, это было размещение вызова, назад функционируют. Я переместил его в основной сменный файл, и это работало.

2
19.02.2020, 21:54

Попытайтесь выполнить этот код консоли

jQuery.post(ajaxurl, {action:'cleanlinks_ajax_get_post_data'}, function(response) {
     console.log (response);
});

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

1
19.02.2020, 21:54
  • 1
    Хорошо это придумывает много вещей, которые я не полностью понимаю. Что я действительно понимаю: ReadyState 4, состояние 200, responseText "0". И затем это придумывает ответ 0. Если там что-то в определенном я должен искать здесь? Если существуют проблемы с кодом, укажите на них, и я могу изучить их, я все еще изучаю jQuery. –  Apina 27.04.2013, 20:34
  • 2
    у Вас есть свой сайт, работающий живой? –  Omar Abid 27.04.2013, 20:35
  • 3
    Нет, это - localhost –  Apina 27.04.2013, 20:36
  • 4
    Трудно для сообщения. Могли Вы пытаться выполнить console.info (ajaxurl); и посмотрите то, что это дает? –  Omar Abid 27.04.2013, 20:37
  • 5
    is_page() хорошо работает с краткими заголовками: @param mixed $page Page ID, title, slug, or array of such. ---------121 попытка--------143274----, заменяющая ajaxurl с 'localhost/wp-admin/admin-ajax.php' и, видит то, что это дает –  Omar Abid 27.04.2013, 21:57

A 0 ответ означает любого, что действие не установлено (в ajax данных) или что функция обратного вызова действия не может быть найдена.

41
19.02.2020, 21:54
  • 1
    Да, это - корректный ответ. Все добавление умирает (), в конец делает, является оконечным сценарий. Тот ответ технически корректен, если Вы видите 0 добавленных в конец вывода, однако если все, что Вы получаете, '0', затем это означает, что ничто не было возвращено, и у Вас есть ошибка, как описано в этом ответе. –  Hybrid Web Dev 11.05.2014, 23:26
  • 2
    Или Вы просто ничего не возвратили нарочно в php, который обрабатывает ajax запрос. Обязательно повторите что-то, иначе, использование .always получать его. –  Solomon Closson 26.10.2015, 19:12

Попытайтесь добавить if оператор:

function my_function(){
$id = $_POST['variation_id'];

    if(isset($_POST['variation_id'])) { 


//your coded function


die();
}



}// end function
-2
19.02.2020, 21:54
  • 1
    Как это решило бы проблему? Отметьте принятый ответ и исходный код. –  fuxia♦ 23.09.2013, 05:28

Я получил ту же проблему. И решенный это. Необходимо отправить переменную "действия" как в примере:

var dataString = {lat: '55.56', lng: '25.35', action:'report_callback'};
 $.ajax({                            
        url: "http://domain.net/wp-admin/admin-ajax.php",  
        type: "POST",
        //some times you cant try this method for sending action variable
        //action : 'report_callback',
        data:dataString,        
        success: function(data){ 
            console.log(data);

            },
        error: function() {
            console.log("Error");            
        }
    });

Поскольку в wp-admin/admin-ajax.php обработчик для переменной действия:

if ( empty( $_REQUEST['action'] ) ) {...}
Line 26
2
19.02.2020, 21:54
  • 1
    OP действительно отправляет action параметр. В то время как это, возможно, работало на Вас, это не была проблема здесь. –  s_ha_dum 11.05.2014, 23:19

То, что необходимо сделать, добавляют die();в конце Вашей функции.

Видьте основания и больше здесь: http://codex.wordpress.org/AJAX_in_Plugins

Примечания:

  • Вы должны echo что-то перед выполнением die. Это предотвратит ошибки сервера и поможет при отладке.
20
19.02.2020, 21:54
  • 1
    Это - ответ на Ajax WP 0 проблем. –  Ben Racicot 26.03.2014, 17:59
  • 2
    На самом деле, если Вы просто добавляете die() не повторяя что-то, это также даст Вам 500 Внутренних Ошибок Сервера и возврат 0 для wp-admin/admin-ajax.php. Необходимо всегда повторять что-то, даже если Вы просто устанавливаете значения, и ничто не необходимо, чтобы быть возвращенным. Иначе, если Вы ничего не повторяете и die(), необходимо использовать .always() для получения его причина, он не будет в .done(), это будет в .fail() потому что это умирает ни с чем = 500 Ошибок. –  Solomon Closson 26.10.2015, 19:05
  • 3
    у Вас есть некоторые ссылки или рабочий код, таким образом, мы можем смотреть? @SolomonClosson –  Francisco Corrales Morales 26.10.2015, 19:18
  • 4
    Все мои ответы были протестированы в продуктивных средах. Очень просто протестировать это, просто сделать a die(); в ajax функционируют в functions.php файл, ничего не повторяя до этого и вызова действие через ajax, например: var testing = $.ajax( ... ); testing.fail(function(response) { console.log('Failed ' + response); }); testing.done(function(response) { console.log('Success ' + response); }); testing.always(function(response) { console.log('Ajax Request complete: ' + response); }); –  Solomon Closson 26.10.2015, 21:33
  • 5
    Вы заметите, Неудавшийся обнаружится, ответ будет 500 Внутренними Ошибками Сервера. –  Solomon Closson 26.10.2015, 21:38

Теги

Похожие вопросы