繁体   English   中英

Wordpress AJAX 不传递 POST 数据

[英]Wordpress AJAX not passing POST data

我正在使用以下代码将 AJAX 集成到 WordPress 插件中:

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

此外,为了安全起见,您应该使用带有check_ajax_referer 的随机数

不要忘记验证和清理您的变量服务器端。

如果您可能想坚持使用属性“数据”,您可以尝试:

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

它只是简单地解析data的字符串值,这将允许您通过数组获取amountmonths的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM