Javascript jQuery内部有多个ajax调用,用于记录相同的响应
我的代码是这样的:Javascript jQuery内部有多个ajax调用,用于记录相同的响应,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我的代码是这样的: for (var i = 0; i < stf_file_names.length; i++) { var temp_file_name = stf_file_names[i]; $.ajax({ type: "POST", url: "php_scripts/some_script.php", data: { stf_file_name: temp_file_name
for (var i = 0; i < stf_file_names.length; i++) {
var temp_file_name = stf_file_names[i];
$.ajax({
type: "POST",
url: "php_scripts/some_script.php",
data: {
stf_file_name: temp_file_name
},
timeout: 600000,
success: function (response) {
console.log("SUCCESS : ", response);
//pausecomp(2000);
}
});
}
for(var i=0;i
这里,some_script.php在后端更新一个数据库,echo是更新行的主键,它是一个数字。但是,当我使用success函数记录日志时,我可以看到它只记录上一次ajax调用多次回显的主键
但是如果我使用某种类型的sleep函数,在本例中是pausecomp(),它会打印不同的主键
我已经研究了多个与此相关的stackoverflow问题,但没有解决它 $.ajax()
是一个异步函数
通过在ajax上循环,您很可能在所有请求中发送相同的数据,因此您收到的所有请求的密钥都相同
当然,当您收到第一个请求的响应时,您会发送下一个请求。
async:false
将完成此任务
$.ajax({
type: "POST",
async: false,
url: "php_scripts/some_script.php",
data:
但是,不建议这样做,最好通过从success递归调用函数来创建循环
这是一个例子
i=0;
function loop_stf_file_names(i){
var temp_file_name = stf_file_names[i];
$.ajax({
type: "POST",
url: "php_scripts/some_script.php",
async: false,
data: {
stf_file_name: temp_file_name
},
timeout: 600000,
success: function (response) {
console.log("SUCCESS : ", response);
if( i < stf_file_names.length ){
loop_stf_file_names( ++i );
}
}
});
}
i=0;
函数循环\u stf\u文件\u名称(i){
var temp_file_name=stf_file_name[i];
$.ajax({
类型:“POST”,
url:“php_scripts/some_script.php”,
async:false,
数据:{
stf_文件名:临时文件名
},
超时:600000,
成功:功能(响应){
日志(“成功:”,响应);
if(i < /代码>它将记录服务器返回的任何内容。但是,如果我取消睡眠功能,为什么要改变输出?考虑成功回调或使用承诺中的循环: