我正在转换一个用逗号分隔的id字符串,并通过一个简单的WordPress ajax调用运行每个ID。像这样...
JS
ids = '575,570,579';
var ids_array = ids.split(',');
ids_array.forEach(function(ids_array_item) {
$.ajax({
type : 'POST',
url : 'myurl',
data : {
action : 'get_custom_content',
customid : ids_array_item
},
success : function( response ) {
if (response != '') {
console.log('response : ' + response);
}
}
});
});
PHP
add_action('wp_ajax_get_custom_content', 'get_custom_content');
add_action('wp_ajax_nopriv_get_custom_content', 'get_custom_content');
function get_custom_content() {
$customid = $_POST['customid'];
echo $customid;
die();
}
我希望能把它找回来...
response : 575
response : 570
response : 579
但是我得到了这个...
response : 575
response : 579
response : 570
有人知道为什么通过ajax调用运行该订单时会被破坏吗?
答案 0 :(得分:3)
Ajax是异步的。不能保证对同一终结点的多个HTTP请求以与发送请求相同的顺序获得响应。
如果顺序很重要,那么请等到所有响应都收集起来(通过将$.ajax
返回的诺言放入Promise.all
中)之后,再遍历它们并记录下来。
或者,编写一个HTTP端点,该端点可以一次性获取多个ID,然后返回结果数组。