WordPress的AJAX没有通过POST数据
问题描述:
我集成AJAX到一个WordPress用下面的代码插件:WordPress的AJAX没有通过POST数据
PHP:
add_action('wp_ajax_nopriv_myajax-submit', 'myajax_submit');
add_action('wp_ajax_myajax-submit', 'myajax_submit');
function myajax_submit() {
$amount = $_POST['amount'];
$months = $_POST['months'];
echo('<b>£'.$amount.' over '.$months.' months</b>');
wp_die();
}
JS:
jQuery("button.compareLoans").click(function() {
jQuery.post(
MyAjax.ajaxurl,
{
action : "myajax-submit",
postID : MyAjax.postID,
data: "amount="+$("input#loan-amount").val()+"&months="+$("#slider").slider("value")
},
function(response) {
$("#content_update").html(response);
}
);
});
我的问题是, '金额'和'月份'变量没有通过,这些都是空白的,并且回报只是'超过几个月',因此完全忽略了变量。
真的不知道这里的问题是什么,任何输入将不胜感激。
答
您没有正确发送数据。如果你检查你$_POST
你将有一个价值$_POST['data']
jQuery("button.compareLoans").click(function() {
jQuery.post(
MyAjax.ajaxurl,
{
action : "myajax-submit",
postID : MyAjax.postID,
amount : $("input#loan-amount").val(),
months : $('#slider').slider("value"),
},
function(response) {
$("#content_update").html(response);
}
);
});
此外,你应该使用nonces与check_ajax_referer安全。
不要忘记validate and sanitize您的变量服务器端也。
答
万一你可能要坚持使用属性“数据”,你可以尝试:
function myajax_submit() {
$amount = explode('=', explode('&', $_POST['data'])[0])[1];
$months = explode('=', explode('&', $_POST['data'])[1])[1];
echo('<b>£'.$amount.' over '.$months.' months</b>');
wp_die();
}
它只是简单地解析数据的字符串值,这将让你得到的值金额和个月,通过一个数组。
谢谢你的作品 - 学校男孩错误:) – AppleTattooGuy
@JamesLeist很高兴帮助。请标记答案是正确的。谢谢。 – Jrod