我在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);
}
});
}
答案 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