我有一堆输入文本框,我想放入一个数组(id和value)并传递ajax。 传递给我的PHP代码后,我需要循环它并将id和值保存在数据库中。 (每个id为1行)
$("input").each(function() {
values[$(this).attr("id")] = $(this).val();
});
我用它来获取值并创建一个数组,这就是它的样子 { “1”: “新”, “2”: “编辑”, “3”: “保存”, “4”: “删除”}
然后我通过ajax传递它,但是如何循环这些值并保存它们?
$taal = $mysqli->real_escape_string($_POST['taal']);
$arr = $_POST['values'];
foreach ($arr as $key => $value) {
$query = "INSERT INTO words (taal_id, number, word) VALUES ('" . $taal . "','" . $key . "','" . $value . "')";
$result = $mysqli->query($query) OR die(mysql_error());
}
这就是我试图使用的但它不起作用
ajax请求
$.ajax( {
url: "javascript/ajax/taal.php?wat=saveWoorden",
type: "POST",
data: {values : values, taal : $('#talen').val()}
}).success(function() {
$('.talenInfo').html('success');
})
答案 0 :(得分:0)
而不是更好地发送单个insert语句来发送准备好的insert语句或发布可以在db端处理的XML数据以进行批量插入。
您可以像这样准备xml或批量插入语句
var query = 'INSERT INTO words (taal_id, word) ';
$("input").each(function () {
query += 'Select ' + $(this).attr("id") + ',' + $(this).val() + ' UNION ALL ';
});
alert(query);
答案 1 :(得分:0)
我不确定......我能够完全复制你的问题,但我已经尝试过这样做了
<?php
unset($_POST['data'][0]);
print_r($_POST);
?>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript></script>
<script type='text/javascript'>
$(document).ready(function()
{
$('#submit').click(function(){
var values = [];
$("input").each(function() {
values[$(this).attr("id")] = $(this).val();
});
$.ajax({
url : 'try.php',
data : {data:values},
type : 'POST',
success :function(data){alert(success)}
});
});});
</script>
<html>
<body>
<form method='post'>
<input id='1' value='text1' type='text'/>
<input id='2' value='text2' type='text'/>
<input type='button' id='submit' value='submit'/>
</form>
</body>
</html>
我发现值数组中的索引0变为空值,所以我必须取消它。 确保您也没有遇到同样的问题,因为它可能违反了数据库约束。
DEBUG TIP:打印查询以检查正在进行的值并尝试直接在phpmyadmin中运行查询。您可能会知道错误是什么。
您可以检查firebug控制台以获取正在发布的值。
答案 2 :(得分:-1)
从您的代码中我了解到您只是将查询存储在变量中而不是执行它。您需要在每次循环迭代中执行SQL查询。如果您使用的是mysql,可以按照以下方式执行:
mysql_query($query);
但请确保您已首先初始化数据库连接。
答案 3 :(得分:-1)
<强> HTML:强>
<input type="text" name="" id="one">
<input type="text" name="" id="two">
<input type="text" name="" id="three">
<input type="submit" value="Submit" id="submit">
<强> JS 强>
var values = {};
$('#submit').click(function(){
$("input").each(function() {
values[$(this).attr("id")] = $(this).val();
});
console.log(JSON.stringify(values));
});
您可以将对象的字符串化传递给php,然后使用JSON库进行解析。 校验 http://jsfiddle.net/wmrqk/
希望它有所帮助!
答案 4 :(得分:-1)
获取所有输入的值和id并将它们放入数组中,然后将它们字符串化
var values = {};
$("input").each(function() {
values[$(this).attr("id")] = $(this).val();
});
values = JSON.stringify(values);
php中的使用json_decode和foreach循环
$arr = json_decode($_POST['values']);
$result = $mysqli->query("delete from woorden where taal_id = " . $taal);
foreach ($arr as $key => $value) {
$query = "INSERT INTO woorden (taal_id, nummer, woord) VALUES ('" . $taal . "','" . $key . "','" . $value . "')";
$result = $mysqli->query($query) OR die(mysql_error());
}