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



我将以下jquery代码放在页面页脚上.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;
});
});

错误消息:开机自检 http://rentsss.com/wp-admin/admin-ajax.php 400(错误请求(

如何修复错误?

您在这一行的问题:

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
}

参考

最新更新