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); 
     } 
    ); 
}); 

此外,你应该使用noncescheck_ajax_referer安全。

不要忘记validate and sanitize您的变量服务器端也。

+0

谢谢你的作品 - 学校男孩错误:) – AppleTattooGuy

+0

@JamesLeist很高兴帮助。请标记答案是正确的。谢谢。 – Jrod

万一你可能要坚持使用属性“数据”,你可以尝试:

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(); 
} 

它只是简单地解析数据的字符串值,这将让你得到的值金额个月,通过一个数组。