我的ajax请求单独工作(如果我等待每个请求返回,然后再提交下一个请求),但是如果我同时提交一组请求(例如单击多个按钮),则只有最后一个操作返回响应。就像每个请求都在覆盖/取消前一个请求一样。
我正在使用WP的管理ajax。php,例如:
<?php
$nonce = wp_create_nonce("my_nonce");
$link = admin_url(\'admin-ajax.php?action=add_item&post_id=\'.$post->ID.\'&nonce=\'.$nonce);
echo \'<a class="add_item" data-action="add_item" data-nonce="\' . $nonce . \'" data-post_id="\' . $post->ID . \'" href="\' . $link . \'">add item</a>\';
?>
(我在一个页面上有几个具有不同post-id的,但nonce只设置一次,并且对于整个页面都是相同的)。
然后一些JS如下:
$(".prod_btns a").click(function(e) {
e.preventDefault();
var action = $(this).data("action");
var post_id = $(this).data("post_id");
var nonce = $(this).data("nonce");
$.ajax({
type : "post",
dataType : "json",
url : myAjax.ajaxurl,
data : {action: action, post_id : post_id, nonce: nonce},
success: function(response) {
if(response.type == "success") {
alert( "success" );
} else {
alert( "fail" );
}
}
});
return false;
});
。。。以及如下接收功能:
add_action( \'wp_ajax_add_item\', \'add_item_funct\');
function add_item_funct() {
if ( !wp_verify_nonce( $_REQUEST[\'nonce\'], \'my_nonce\' ) ) {
exit( "Ajax authentication failed!" );
}
// do some stuff...
$result[\'type\'] = "success";
if(!empty($_SERVER[\'HTTP_X_REQUESTED_WITH\']) && strtolower($_SERVER[\'HTTP_X_REQUESTED_WITH\']) == \'xmlhttprequest\') {
$result = json_encode($result);
echo $result;
} else {
header("Location: ".$_SERVER["HTTP_REFERER"]);
}
die();
}
如果只单击1个链接并等待其返回,则一切正常;“成功”;,然后单击“下一步”,但如果单击“多个”;添加项目;同时,只有最后一个链接返回成功消息。
我错过了什么?感谢您抽出时间。。。