我有一些代码可以很好地保存到数据库等。我现在想做的是,在保存字段后,我希望将最后一个返回的id填充到一个隐藏字段中,这样我就可以使用它来确定未来的任何插入/更新查询。
我的表格是:
<div id="formHolder">
<form type="post" action="add_room.php" id="mainForm">
<label for="itemName[]">Item</label>
<input type="text" name="itemName[]">
<label for="itemPhoto[]">Item</label>
<input type="text" name="itemPhoto[]">
<input type="hidden" name="hiddenId[]" value="">
<div class="save">Save Item</div>
</form>
</div>
我的jQuery是:
<script>
$(document).ready(function() {
$('body').on('click', '.save', function(e) {
var string = $(this).closest('form').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(){
$('<form><label for="itemName[]">Item</label><input type="text" name="itemName[]"><label for="itemPhoto[]">Photo</label><input type="text" name="itemPhoto[]"><input type="hidden" name="hiddenId[]" value=""><div class="save">Save Item</div></form>').fadeIn(500).appendTo('#formHolder');
});
});
</script>
最后我的php是:
<?PHP
include('dbConfig.php');
$item = $_POST['itemName'];
$photo = $_POST['itemPhoto'];
foreach($item as $key => $val) {
if ($stmt = $db->prepare("INSERT test (test_title, test_desc) VALUES (?, ?)"))
{
// Use an s per variable passed to the string, example - "ss", $firstname, $lastname
$stmt->bind_param("ss", $val, $photo[$key]);
$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.";
}
}
?>
在向数据库中添加字段数据、添加额外字段等方面,一切都很好。我只是无法让它保存每个ajax帖子的回显id以保存到隐藏字段,但它将其保存到#messagediv中,没有问题。有什么想法吗?我试过使用.val();但它没有起作用,我被难住了
Andy
在成功函数中尝试此操作
$("[type=hidden]").val(data);
或者如果你能设置隐藏字段id,那就比这个好得多
<input type="hidden" name="hiddenId[]" id="hiddenId" value="">
代码将像这个
$("#hiddenID").val(data);
希望它能帮助
您可以使用以下代码
$("[type=hidden").val(data);
或
$("#hiddenId").attr("value",data);
data
变量包含php文件的所有输出,因此如果添加多个项目,它将是一个字符串,所有新添加的ID都连接在一起。
我想做的是:
- 在html表单字段中使用计数器,这样您就可以准确地知道要寻址的字段,比如:
<input type="text" name="itemName[1]">
- 将这个键和值添加到php中的数组中,而不是将其回显:
$array[$key] = $db->insert_id;
- 在php插入循环之后,在javascript端回显所需的数据:
echo json_encode($array);
- 循环使用ajax成功函数中的数据,为正确的元素分配正确的值
您可能需要稍微更改ajax调用以接受json。