为什么wordpress网站显示对jquery的错误请求?

时间:2018-09-16 19:35:11

标签: javascript jquery wordpress

我将以下jquery代码放在主题文件夹中的footer.php页面上:

jQuery( document ).ready(function() {
 jQuery('body').on('click', 'a.closebtn', function(e) {
       jQuery(document.body).removeClass('commentpopupdata');
        return false;

    });
   jQuery( ".commentCountDiv" ).click(function() {
    var product_id = jQuery(this).attr("com_productid");
    jQuery(document.body).addClass('commentpopupdata');
    jQuery.ajax({
                    url:"<?php echo admin_url( 'admin-ajax.php' ); ?>",
                            type:'POST',
                            data:'action=productscomments&product_id='+product_id,
                             success:function(results)
                                {
                                     jQuery(".upcomproduct").html(results);
                                 }
                         });
                 return false;
});
});

错误消息:POST http://rentsss.com/wp-admin/admin-ajax.php 400(错误请求)

如何解决该错误?

1 个答案:

答案 0 :(得分:1)

您在此行的问题:

data:'action=productscomments&product_id='+product_id,

该操作实际上是您必须在钩子中定义的Ajax处理程序

add_action( 'wp_ajax_my_action', 'my_function' );

add_action( 'wp_ajax_nopriv_my_action', 'my_function' );

wp_ajax_wp_ajax_nopriv_之后的通知,我们添加了动作值my_action

正如您在脚本中所定义的那样,操作等于productscomments&product_id='+product_id, WordPress试图查找具有该名称的操作,当该操作不可用时,您将获得400 (Bad Request)

例如,如果您想在用户单击commentCountDiv按钮时重新列出评论,则代码应如下所示:

jQuery( document ).ready(function() {
jQuery('body').on('click', 'a.closebtn', function(e) {
    jQuery(document.body).removeClass('commentpopupdata');
        return false;

    });
jQuery( ".commentCountDiv" ).click(function() {
    var product_id = jQuery(this).attr("com_productid");
    jQuery(document.body).addClass('commentpopupdata');
    jQuery.ajax({
    url:"<?php echo admin_url( 'admin-ajax.php' ); ?>",
            type:'POST', 
            data:{
                'action': 'my_action', //here is your function name
                'product_id': 'product_id',
            },
                success:function(results)
                {
                    jQuery(".upcomproduct").html(results);
                    }
                });
        return false;
});
});

,您的php代码应如下所示:

add_action( 'wp_ajax_my_action', 'my_action' );
add_action( 'wp_ajax_nopriv_my_action', 'my_action' );

function my_action() {

    $product_id = $_POST['product_id'];
    echo $product_id;
    wp_die(); // this is required to terminate immediately and return a proper response
}

Reference