1

我有一些代码可以很好地保存到数据库等。我现在想做的是在保存字段之后,我希望将回显的最后一个 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 以保存到隐藏字段,但它将它保存到 #message div 没问题。有任何想法吗?我试过使用 .val(); 但它没有用,我很难过

安迪

4

3 回答 3

5

在成功函数中尝试这个

$("[type=hidden]").val(data);

或者,如果您能够设置隐藏字段 ID,那就更好了

<input type="hidden" name="hiddenId[]" id="hiddenId" value="">

代码将是这样的

 $("#hiddenID").val(data);

希望它会有所帮助

于 2013-07-04T13:18:56.613 回答
0

ajax 成功函数中的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。

于 2013-07-04T13:26:49.607 回答
0

您可以使用以下代码

$("[type=hidden").val(data);

或者

$("#hiddenId").attr("value",data);
于 2013-07-04T13:22:19.830 回答