我有一个带有按钮的表单,可以添加动态输入字段,并且正在创建ajax问题。我的Ajax帖子给我500个错误 但是我的控制台数据日志现在是这样的:
但是我需要将它们插入为
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="user-scalable=no, initial-scale=1" />
<link rel="stylesheet" type="text/css" href="../style.css">
</head>
<body>
<div class="anything">
<a href="dir/another.html">Link</a>
</div>
...
如果有道理。
因此,基本上,问题是我在任何给定时间都有多个输入(包含文本值),并且隐藏的输入形式为我提供了正确的代码ID。
但是,我需要使我的数组包含每个具有输入文本值和代码ID的元素。因此,对于创建和填充的每个输入,我还需要为其分配该表单的隐藏输入的值,以便将它们成对发送到我的foreach循环并进行插入。
这是我的addticker.php,它被要求插入:
insert into ticker_content (ticker_id, content)
values (1, 'one'), (1, 'two');
因此,基本上,对于每个Items []值,我都需要插入相同的隐藏字段。
这是我的表格和JS代码供参考。第一个JS块主要用于动态添加输入的功能,但是最后一个JS块是使用serializeArray()的ajax;
$items = $_POST['Items'];
$tickerID = $_POST['tickerID'];
foreach ($items as $item){
$addTicker = "
INSERT INTO ticker_content (tickerID, content)
values ('$tickerID', '$item');
"
$mysqlConn->query($addTicker);
}
答案 0 :(得分:2)
首先,您在代码中缺少分号(这很可能导致您的500错误)。
第二,如果您希望将表单中的所有字段捆绑为一个查询,则以下内容将构建一个查询,类似于您之前在问题中指出的内容:
插入到ticker_content(ticker_id,内容)VALUES(1,'one'),(1,'two'),...
$items = $_POST['Items'];
$tickerID = $_POST['tickerID'];
$addTicker = "INSERT INTO ticker_content (tickerID, content) values";
foreach ($items as $item){
$addTicker .= "('$tickerID', '$item'),";
}
$addTicker = substr($addTicker, 0, -1); // Eat that last comma
$mysqlConn->query($addTicker);
您的HTML也需要一些工作,因为id
属性在页面上应该是唯一的。由于您要复制表格,因此您应该执行以下操作:
<form id="Items<?php echo $ticker['ticker']?>" class="tickerform" method="post">
然后更新您的JavaScript:
// Using $(this) in Jquery allows you to access the
// element that is making the method call (in this case, the form)
$(".tickerform").submit(function(e) {
e.preventDefault();
var data = $(this).serializeArray();
console.log(data);
$.ajax({
type: "POST",
url: "addticker.php",
data: data, // Don't need to serialize again, 'var data' is still in scope.
success: function(data)
{
alert(data); // show response from the php script.
}
});
});