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

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

通过 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 输入元素,并将值插入到 JS 变量中,这些变量在每次迭代时附加到 dataString 并通过 AJAX 传递 到将它们插入数据库表中的 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 元素都存储在 div 中(有些在一起;有些分开)...JS 验证函数(导致调用 db_input 的循环) 由 button onclick 调用:

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

这是第一次工作......根据打开并使用非空数据验证的 div 数量,JS 循环并插入 a_var, b_varc_vard_vare_var 通过 db_input 输入数据库 ajax 调用 db-input.php 脚本...

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

最佳答案

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

关于javascript - 通过循环 AJAX 调用插入查询第二次及以后不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35949066/

相关文章:

java - 请求不包含多部分/表单数据或多部分/混合流,内容类型 header 为 false

javascript - 无法在通过 jquery 选择选项时触发操作

javascript - 标准化堆积条形图绘制问题。无论数据如何,所有矩形均等分

php - date() 和 gmdate() 的不同结果

javascript - 从输入值中删除数组中定义的文本 block

javascript - PHP - 使用放大弹出窗口提交表单后显示消息

php - 具有 LEFT JOIN 和 LIKE 条件的 MySQL 查询未显示我的预期

javascript - 使用 javascript 和一些跨浏览器支持将内容添加到 svg

javascript - 显示带有警报的文本框名称的语法

javascript - Respond.js CDN/X-Domain 设置