Wordpress ajax返回0而不是字符串消息


wordpress ajax returning zero instead of string message

我的ajax调用返回零,即使我写了die()在我的PHP函数的末尾。我看了这里的其他问题,没有弄清楚,请看看我的代码

我使用这个函数进行ajax调用:

$('.aramex-pickup').click(function() {
    var button = $(this);
    var pickupDateDate = $('.pickup_date').val();
    var pickupDateHour = $('.pickup_date_hour').val();
    var pickupDateMinute = $('.pickup_date_minute').val();
    var pickupDate = pickupDateDate + ' ' + pickupDateHour + ':' + pickupDateMinute;
    var orderId = button.data('id');
    if (pickupDate) {
        //show loader img
        button.next('.ajax-loader').show();
        var data = {
            'action': 'aramex_pickup',
            'order_id': orderId,
            'pickup_date': encodeURIComponent(pickupDate)
        };
        $.ajax({
            url: ajaxurl,
            data: data,
            type: 'POST',
            success: function(msg) {
                console.log(msg);
                if (msg === 'done') {
                    location.reload(true);
                } else {
                    var messages = $.parseJSON(msg);
                    var ul = $("<ul>");
                    $.each(messages, function(key, value) {
                        ul.append("<li>" + value  + "</li>");
                    });
                    $('.pickup_errors').html(ul);
                }
            }, complete: function() {
                //hide loader img
                $('.ajax-loader').hide();
            }
        });
    } else {
        alert("Add pickup date");
    }
    return false;
});
在后端,我编写了这个函数来测试ajax是否正常工作:
public function ajax_pickup_callback() {
    echo 'ajax done';
    die();
}

我注册了这个动作:

add_action('wp_ajax_aramex_pickup', array($this, 'ajax_pickup_callback'));

所有这些都返回0而不是"ajax done"。

请帮忙好吗?

实际上你的钩子没有被执行。您必须在ajax请求中传递操作,如图所示。

jQuery.post(
ajaxurl, 
{
    'action': 'add_foobar',
    'data':   'foobarid'
}, 
function(response){
    alert('The server responded: ' + response);
}

);