Javascript 通过循环AJAX调用插入查询第二次及以后不起作用?

Javascript 通过循环AJAX调用插入查询第二次及以后不起作用?,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我有一个JS函数,名为db\u input: function db_input(dataString,x){ $.ajax({ url: "custom_scripts/db-input.php", type: "POST", dataType:'json', data: dataString, cache: false, success: function(data){

我有一个JS函数,名为
db\u input

function db_input(dataString,x){
    $.ajax({
        url: "custom_scripts/db-input.php",
        type: "POST",
        dataType:'json',
        data: dataString,
        cache: false,
        success: function(data){
            if(data.auth==true){
                //alert("success: " + x);
            } else {
                alert(data.error);
                return false;
            }          
        }
    })
}
通过
forloop
传递一个名为
dataString
的JS
var

for(x=1;x<=var;x++){
    ...
    var dataString = 'a_var='+ a_var + '&b_var='+ b_var  + '&c_var='+ c_var  + '&d_var='+ d_var  + '&e_var='+ e_var;
    db_input(dataString,x);
}
每个
HTML
元素都存储在
div
中(有些一起存储,有些分开存储)。。。JS验证函数(导致调用
db_input
的循环)由
按钮
onclick
调用:

<input class="submit" style="float:left; color: #595959;" type="button" value="submit" onclick="validate();" />

这是第一次有效。。。根据打开并使用非空数据验证的
div的数量,JS通过
db\u-input
b\u-var
c\u-var
d\u-var
e\u-var
调用
db-input.php
脚本,循环并插入数据库中


问题是,虽然每次调用似乎都会完成(
success
),但数据只会在第一次或刷新页面之前插入到数据库中。。。问题是什么

尝试将async设置为false:

function db_input(dataString,x){
    $.ajax({
        async: false,
        url: "custom_scripts/db-input.php",
        type: "POST",
        dataType:'json',
        data: dataString,
        cache: false,
        success: function(data){
            if(data.auth==true){
                //alert("success: " + x);
            } else {
                alert(data.error);
                return false;
            }          
        }
    })
}

尝试将async设置为false:

function db_input(dataString,x){
    $.ajax({
        async: false,
        url: "custom_scripts/db-input.php",
        type: "POST",
        dataType:'json',
        data: dataString,
        cache: false,
        success: function(data){
            if(data.auth==true){
                //alert("success: " + x);
            } else {
                alert(data.error);
                return false;
            }          
        }
    })
}

不如我们将逻辑改为一次全部命中服务器:

function db_input(dataStrings){
    $.ajax({
        url: "custom_scripts/db-input.php",
        type: "POST",
        dataType:'json',
        data: dataStrings,
        cache: false,
        success: function(data){
            if(data.auth==true){
                //alert("success: " + x);
            } else {
                alert(data.error);
                return false;
            }          
        }
    })
}

var-dataStrings=[];

对于(x=1;x我们将逻辑更改为一次全部命中服务器如何:

function db_input(dataStrings){
    $.ajax({
        url: "custom_scripts/db-input.php",
        type: "POST",
        dataType:'json',
        data: dataStrings,
        cache: false,
        success: function(data){
            if(data.auth==true){
                //alert("success: " + x);
            } else {
                alert(data.error);
                return false;
            }          
        }
    })
}

var-dataStrings=[];

对于(x=1;x我算出了…我意外地清除了一个变量(表单上的布尔值为“”,而不是默认值为1)…我将在db-input.php中添加额外的验证以确保查询成功…感谢大家的帮助…

我算出了…我意外地清除了一个变量(表单上的布尔值为“”,而不是默认值1)…我将在db-input.php中添加额外的验证以确保查询成功…感谢大家的帮助…

尝试此操作,在ajax成功if语句中添加return true“if(data.auth==true)”您需要对从ajax成功函数传回的“data”变量执行JSON.parse。在执行此操作之前,您将无法读取auth。您必须记住,$.axaj是异步的:1.您在ajax回调中使用的是
x
,当回调触发x时,x与您传入时的情况不同。2.您的服务器可能会不允许来自同一IP/会话的多个同时请求同时发生,并且正在停止第1个请求之外的所有请求。@BilalUsean已测试…相同问题…@eatpeanutbutter如果(data.auth==true)正在工作,但…尝试此操作,如果语句“if(data.auth==true)”在ajax成功中添加return true您需要对从ajax成功函数传回的“data”变量执行JSON.parse。在执行此操作之前,您将无法读取auth。您必须记住,$.axaj是异步的:1.您在ajax回调中使用的是
x
,当回调触发x时,x与您传入时的情况不同。2.您的服务器可能会不允许来自同一IP/会话的多个同时请求同时出现,并且正在停止第1个以外的所有请求。@BilalUsean已测试…相同问题…@eatpeanutbutter if(data.auth==true)但是正在工作…不要这样做。永远不要。@faalbane您能在JS代码中粘贴您的精确变量设置吗?不要这样做。永远不要。@faalbane您能在JS代码中粘贴您的精确变量设置吗?