将变量传递给函数时出现500错误

时间:2020-03-11 21:57:47

标签: php wordpress

我在WordPress函数文件中具有以下功能,如果我按以下方式运行它而没有两个参数,则可以正常工作,但是当我传递参数时,jQuery中的错误处理程序将返回状态500。

如果我不将参数传递给PHP函数,我会从jQuery获得状态200,但这是来自错误处理程序,而不是来自成功处理程序。为什么这样?

function subscribe_funk(){//$payment_method, $customer_handle){
    return "This is a test";
    die();
}

从此ajax调用它:

function subscribe(data) {
    jQuery.ajax({
        url: PT_Ajax.ajaxurl,
            type: "POST",
            data: {'action': 'subscribe_funk', 'payment_method': data.payment_method, 'customer_handle': data.customer},
            cache: false,
            dataType: 'json',
            beforeSend: function(){
                console.log('Before send subscribe');
            },
            complete: function(){
            },
            success: function (response) { 
                console.log('Message from success handler: ');
                console.log(response);
            },
            error: function(xhr, status, error){
                console.log("Message from error handler:")
                var errorMessage = xhr.status + ': ' + xhr.statusText
                console.log(errorMessage);
            }
        });
}

1 个答案:

答案 0 :(得分:0)

您的函数需要2个参数,但是WP / ajax没有直接传递它们。 您需要自己从$ _POST数组中获取它们:

function subscribe_funk(){
    $payment_method = $_POST['payment_method'];
    $customer_handle = $_POST['customer_handle'];
    return "This is a test";
    die();
}

此外,您可能希望使用sanitize_text_field()或类似功能来sanitize the post data

以下是WP StackExchange中的一个相关线程:how to pass parameters from jQuery ajax to a PHP function