我有一个代码块,它是一个动态生成的 div,其表单(基于数组循环)具有通过按钮添加的动态输入:
<?php foreach($tickerDisplays as $key => $ticker):?>
<form id="Items" method="post">
<label id="ItemLabel">Item 1: </label>
<input type="text" name="Items[]"><br/>
<button type="button" class="moreItems_add">+</button>
<input type="hidden" name="tickerID" id="tickerID" value="<?php echo $ticker['ticker'] ?>">
<input type="submit" name="saveTickerItems" value="Save Ticker Items">
</form>
<?php endforeach;?>
<script type="text/javascript">
$("button.moreItems_add").on("click", function(e) {
var tickerID = $('#tickerID').val();
var numItems = $("input[type='text']", $(this).closest("form")).length;
if (numItems < 10) {
var html = '<label class="ItemLabel">Item ' + (numItems + 1) + ': </label>';
html += '<input type="text" name="Items[]"/><br/>';
$(this).before(html);
console.log(tickerID);
}
});
</script>
上面的代码正在运行,并且只允许“+”按钮添加新输入。我从隐藏输入中获取输入值以及股票代码 ID,以准备 ajax 提交。我从序列化表单中得到了我所期望的结果,但我有一个问题。
以下代码:
<script type="text/javascript">
$("#Items").submit(function(e) {
e.preventDefault();
var data = $("#Items").serialize();
console.log(data);
});
</script>
打印此内容:
Items%5B%5D=this&Items%5B%5D=is&Items%5B%5D=test&tickerID=1
这是我所期望的。问题是,通过 ajax 调用 mysql 插入函数,我需要为每个值加上tickerID 插入一条记录。我的sql插入正在插入tickerID和内容列。因此,对于上面的 console.log,我需要以下插入:
tickerID | content
----------------------
1 this
1 is
1 test
如何正确地将表单数据传递给 ajax,然后执行类似 foreach 的操作以插入多条记录?
ajax调用
<script type="text/javascript">
$("#Items").submit(function(e) {
$.ajax({
type: "POST",
url: addticker.php,
data: form.serialize(), // serializes the form's elements.
success: function(data)
{
alert(data); // show response from the php script.
}
});
e.preventDefault(); // avoid to execute the actual submit of the form.
});
</script>
addticker.php
$tickerID = $_POST[''];
$content = $_POST[''];
$addTicker = "
INSERT INTO tickerTable (tickerID, content)
values ('$tickerID', '$content');
"
$mysqlConn->query($addTicker)
最佳答案
希望这能起作用。
$items = $_POST['Items'];
$tickerID = $_POST['tickerID'];
foreach ($items as $item){
$addTicker = "
INSERT INTO tickerTable (tickerID, content)
values ('$tickerID', '$item');
"
$mysqlConn->query($addTicker);
}
关于javascript - ajax将多条记录插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52307634/