我在下面有一些代码,它对一个输入字段工作正常。但是,如果单击名为#addForm的div,并且输入的名称为name =“itemName []”,我有一些代码可以在表单中附加额外的字段。
<script>
$(document).ready(function() {
$('body').on('click', '.save', function(e) {
var string = $(this).serialize();
$.ajax({
type: "POST",
url: "add_room.php",
data: string,
cache: false,
success: function(data){
$('#message').text('The id of the inserted information is ' + data);
}
});
});
});
$(document).ready(function(){
$('#addForm').on('click', function(){
$('<label for="itemName[]">Item</label><input class="itemName" type="text" name="itemName[]"><label for="itemCondition">Condition</label><input class="itemCondition" type="text" name="itemCondition"><div class="save">Save Item</div>').fadeIn(500).appendTo('#mainForm');
});
});
</script>
正如你所看到的,我已经获得了大部分代码,但我对序列化感到困惑,我不知道如何在php端处理这个问题。
到目前为止这是我的脚本:
<?PHP
include('dbConfig.php');
$item = $db->real_escape_string($_POST['itemName']);
if ($stmt = $db->prepare("INSERT test (test_title) VALUES (?)"))
{
// Use an s per variable passed to the string, example - "ss", $firstname, $lastname
$stmt->bind_param("s", $item);
$stmt->execute();
$stmt->close();
echo $db->insert_id;
//echo "success";
}
// show an error if the query has an error
else
{
echo "ERROR: Could not prepare SQL statement.";
}
?>
答案 0 :(得分:1)
您在<form>
或一组表单字段上调用serialize
而不是按钮(我猜)
如果按钮在表单中,请尝试
var string = $(this).closest('form').serialize();
如果您没有表格,只需选择所需的所有输入
var string = $('#input1,#nextone,#somefield').serialize();
答案 1 :(得分:0)
$_POST['itemName']
将成为一个数组。你需要这样对待它(即不要试图对它进行real_escape_string()
)。
您还需要循环遍历数组执行单独的插入查询,或构建插入所有值的单个查询。
从javascript的角度来看,我猜你需要序列化表单而不是单击的按钮。我刚刚注意到@Musa发布了一个答案,所以请遵循该指示。
答案 2 :(得分:0)
从我的观点来看
var string = $(this).serialize();
上述上下文中的 this
最有可能是具有类名save
的DOM元素的引用,它可以是提交表单的按钮。
但是,调用serialize()的正确元素应该是表单元素。
我认为这就是为什么你无法从服务器端获得任何东西,
$_POST['itemName']
我建议,您可以先查看$_POST
对象,然后弄清楚如何从中提取所需的数据。
希望有所帮助
答案 3 :(得分:0)
表格
<form method="POST" class="save" action="add_room.php">
<input type="text" name="itemName[]"/>
<input type="text" name="itemName[]"/>
<button type="submit">Save</button>
</form>
的jQuery
$(document).on("submit",".save",function(e){
e.preventDefault();
$.post($(this).attr("action"),$(this).serialize(),function(r){
//result
alert(r);
});
});
PHP
$item = $_POST['itemName']
foreach( $item as $key => $val ) {
//iterate itemName values
}