wordpress ajax返回零而不是字符串消息

时间:2016-10-04 12:16:02

标签: javascript php jquery ajax wordpress

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

我使用此函数进行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而不是&#34; ajax完成&#34;。

请帮忙吗?

1 个答案:

答案 0 :(得分:-1)

实际上你的钩子没有被执行。您必须在ajax请求中传递操作,因为您可以看到here

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

);