WP ajax requests not stacking?
Question
I managed to get Ajax requests working using WP’s admin-ajax.php, like so:
<?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>';
?>
and then some JS like this:
$(".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;
});
… and a receiving function like so:
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();
}
This all works fine until I clicked multiple “add” buttons simultaneously, and only the last one returned a success message?
As long as I click only 1 button and wait for it to return “success” it works, but if I click a second button before the first has returned, it seems to cancel out the previous request instead of carrying it out asynchronously?
What am I missing? Thanks for taking the time…
0
4 months
0 Answers
26 views
0
Leave an answer
You must login or register to add a new answer .