我有一个名为 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_var
、c_var
、d_var
和 e_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/