我有一个名为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循环并插入divs
,a_var
,{{ 1}},b_var
和c_var
通过对d_var
脚本的e_var
db_input
调用进入数据库...
问题在于,虽然每次调用似乎都完成(ajax
),但数据仅在第一次插入数据库或直到刷新页面时才会... ...(s) ) 问题)?
答案 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中添加额外的验证以确保查询成功...感谢大家的帮助...