通过循环AJAX调用INSERT查询第二次及以后无法正常工作?

时间:2016-03-11 20:11:58

标签: javascript php jquery html ajax

我有一个名为db_input的JS函数:

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;
            }          
        }
    })
}

通过var传递称为dataString的JS forloop

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输入元素,并将值插入到JS变量中,每次迭代后附加到dataString并通过AJAX传递给{{1将它们插入数据库中的表的脚本:

PHP

每个<?php ... $a_var=$_POST['a_var']; $b_var=$_POST['b_var']; $c_var=$_POST['c_var']; $d_var=$_POST['d_var']; $e_var=$_POST['e_var']; $rVal=array("auth" => false, "error" => NULL); //connect $query="INSERT INTO `db`.`table` (`a_var`, `b_var`, `c_var`, `d_var`, `e_var`) VALUES (?, ?, ?, ?, ?);"; $stmt = $conn->prepare($query); $stmt->bind_param("sssss", $a_var, $b_var, $c_var, $d_var, $e_var); $stmt->execute(); $rVal['auth']=true; $stmt->close(); $conn->close(); echo json_encode($rVal); ... ?> 元素都存储在HTML中(有些在一起;有些分开)...... JS验证函数(通向调用divs的循环)由a调用db_input button

onclick

这是第一次......根据使用非空数据打开和验证的<input class="submit" style="float:left; color: #595959;" type="button" value="submit" onclick="validate();" /> 的数量,JS循环并插入divsa_var,{{ 1}},b_varc_var通过对d_var脚本的e_var db_input调用进入数据库...

问题在于,虽然每次调用似乎都完成(ajax),但数据仅在第一次插入数据库或直到刷新页面时才会... ...(s) ) 问题)?

3 个答案:

答案 0 :(得分:0)

尝试将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;
            }          
        }
    })
}

答案 1 :(得分:0)

我们如何改变一次性命中服务器的逻辑:

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 =[];
for(x=1;x<=var;x++){
    dataStrings.push('a_var='+ a_var + '&b_var='+ b_var  + '&c_var='+ c_var  + '&d_var='+ d_var  + '&e_var='+ e_var);    
}

db_input(dataStrings);

你必须修复PHP(其他人必须权衡)接受一个值列表列表,但这将是我如何构建整个过程。

答案 2 :(得分:0)

我想通了......我不小心清除了一个变量(表单上的布尔值为''而不是默认值1)...我将在db-input.php中添加额外的验证以确保查询成功...感谢大家的帮助...