我将以下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(错误请求)
如何解决该错误?
答案 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
}