Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery内部有多个ajax调用,用于记录相同的响应_Javascript_Php_Jquery_Ajax - Fatal编程技术网

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< /代码>它将记录服务器返回的任何内容。但是,如果我取消睡眠功能,为什么要改变输出?考虑成功回调或使用承诺中的循环: