Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 成功发布ajax后,如何设置隐藏字段的值?_Php_Jquery_Ajax_Post - Fatal编程技术网

Php 成功发布ajax后,如何设置隐藏字段的值?

Php 成功发布ajax后,如何设置隐藏字段的值?,php,jquery,ajax,post,Php,Jquery,Ajax,Post,我有一些代码可以很好地保存到数据库等。我现在想做的是在保存字段后,我希望将回显的最后一个id填充到一个隐藏字段,以便我可以使用它来确定任何未来的插入/更新查询 我的表格是: <div id="formHolder"> <form type="post" action="add_room.php" id="mainForm"> <label for="itemName[]">Item</label> <input type="t

我有一些代码可以很好地保存到数据库等。我现在想做的是在保存字段后,我希望将回显的最后一个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>

$(文档).ready(函数(){
$('body')。在('click','save',函数(e)上{
变量字符串=$(this).closest('form').serialize();
$.ajax({
类型:“POST”,
url:“add_room.php”,
数据:字符串,
cache:false,
成功:功能(数据){
$('#message').text('插入信息的id为'+数据);
}
});
});
});
$(文档).ready(函数(){
$('#addForm')。在('click',function()上{
$('ItemPhotoSaveItem').fadeIn(500).appendTo('#formHolder');
});
});
最后,我的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();但没用,我被难倒了


Andy

在成功功能中尝试此功能

$("[type=hidden]").val(data);
或者,如果你能设置隐藏字段id,这样会更好

<input type="hidden" name="hiddenId[]" id="hiddenId" value="">
 $("#hiddenID").val(data);

希望它将有助于

在成功功能中尝试此功能

$("[type=hidden]").val(data);
或者,如果你能设置隐藏字段id,这样会更好

<input type="hidden" name="hiddenId[]" id="hiddenId" value="">
 $("#hiddenID").val(data);

希望对您有所帮助

您可以使用以下代码

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


您可以使用以下代码

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


ajax success函数中的
data
变量包含php文件的所有输出,因此如果要添加多个项,它将是一个字符串,所有新添加的ID都连接在一起

我会这样做:

  • 在html表单字段中使用一个计数器,以便准确地知道要处理的字段,例如:
  • 将此键和值添加到php中的数组中,而不是将其回显:
    $array[$key]=$db->insert\u id
    
  • 在php插入循环之后,在javascript端回显所需的数据:
    echo json_encode($array)
  • 在ajax success函数中循环您的数据,将正确的值分配给正确的元素

您可能需要稍微更改ajax调用以接受json。

ajax成功函数中的
数据
变量包含php文件的所有输出,因此如果要添加多个项,它将是一个字符串,所有新添加的ID都连接在一起

我会这样做:

  • 在html表单字段中使用一个计数器,以便准确地知道要处理的字段,例如:
  • 将此键和值添加到php中的数组中,而不是将其回显:
    $array[$key]=$db->insert\u id
    
  • 在php插入循环之后,在javascript端回显所需的数据:
    echo json_encode($array)
  • 在ajax success函数中循环您的数据,将正确的值分配给正确的元素

您可能需要稍微更改ajax调用以接受json。

嘿,谢谢您的回答。我现在有了代码-success:function(data){$('#message').text('插入信息的id为'+data);}),因为我使用$(this)提交最接近.save div的表单,我只需要它来更新隐藏字段。那么我会做类似的事情吗?成功:function(data){$(this).closest([type=hidden]).val(data);}我已经要求您对上述代码做出响应,我需要知道它是否能工作。它需要在隐藏字段中显示返回的id。如果它不能完全工作,我将无法接受答案,因为在设置$(this)时,我需要再考虑一下它在成功函数中不起作用那么我该如何解决这个问题呢?这是一个非常关键的方面,你需要这样设置:$this=$(this);在成功之前(在$(this.closest('form').serialize();)之后,你需要在suces函数中设置:$this.closest([type=hidden]).val(data);嘿,谢谢你的回答。我现在有了代码-success:function(data){$('#message').text('插入信息的id为'+data);}),因为我使用$(this)提交最接近.save div的表单,我只需要它来更新隐藏字段。那么我会做类似的事情吗?成功:function(data){$(this).closest([type=hidden]).val(data);}我已经要求您对上述代码做出响应,我需要知道它是否能工作。它需要在隐藏字段中显示返回的id。如果它不能完全工作,我将无法接受答案,因为在设置$(this)时,我需要再考虑一下它在成功函数中不起作用那么我该如何解决这个问题呢?这是一个非常关键的方面,你需要这样设置:$this=$(this);在成功之前(在$(this.closest('form').serialize();)之后,你需要在suces函数中设置:$this.closest([type=hidden]).val(data);由于每个表单都是独立的,所以我当前的代码可以正常工作,并将正确的值发送到数据库等。获取id是我唯一遇到问题的地方。我不熟悉这一点,所以您可以发布一个代码示例吗?我希望能够使用id来确定是否应该更新一组字段(id存在),或者如果没有id,则将其作为新项目插入:),如果每个表单是单独的,为什么在表单字段名中使用数组,在php中使用循环?因为出于某种原因,这是我的php处理发送给它的数据的唯一方法。当我移除循环和数组时,它只能在第一种形式上工作,鄙视