Javascript 为什么wordpress网站对jquery的要求不好?

Javascript 为什么wordpress网站对jquery的要求不好?,javascript,jquery,wordpress,Javascript,Jquery,Wordpress,我将以下jquery代码放在主题文件夹的page footer.php上: jQuery( document ).ready(function() { jQuery('body').on('click', 'a.closebtn', function(e) { jQuery(document.body).removeClass('commentpopupdata'); return false; }); jQuery( ".commentCount

我将以下jquery代码放在主题文件夹的page 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;
});
});
jQuery(文档).ready(函数(){
jQuery('body')。在('click','a.closebtn',函数(e)上{
jQuery(document.body).removeClass('CommentPopUpdatea');
返回false;
});
jQuery(“.commentCountDiv”)。单击(函数(){
var product_id=jQuery(this.attr(“com_productid”);
jQuery(document.body).addClass('commentPopUpdatea');
jQuery.ajax({
url:“”,
类型:'POST',
数据:'action=productscomments&product_id='+product_id,
成功:功能(结果)
{
jQuery(“.upcomproduct”).html(结果);
}
});
返回false;
});
});
错误消息:POST 400(错误请求)


如何修复错误?

您在这一行遇到的问题:

数据:'action=productscomments&product\u id='+product\u id,

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

add_action('wp_ajax_my_action','my_function')

add_action('wp_ajax_nopriv_my_action','my_function')

请注意,在
wp\u ajax\u
wp\u ajax\u nopriv\u
之后,我们添加了动作值,即我的动作

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

因此,例如,如果您想在用户单击
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;
});
});

通常需要向wp ajax发送一个
nonce
。还要确保wp函数中的操作是正确的
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
}