HTML中的多个隐藏字段

时间:2012-05-08 19:25:37

标签: php html ajax

我正在创建一个弹出对话框,我需要以隐藏格式放置一组值,但是当我在AJAX帖子中获取值时,我只得到最后一个值。

这是PHP部分:

$plan_ids=array();
foreach($test_plan as $plan)
{
    $plan_ids[]=$plan['plan_id'];
}
?>

<?php
foreach($plan_ids as $id)
{
    echo "<input type='hidden' id='plan_id' value='$id'>";
}
//var_dump($plan_ids);
// echo $plan['plan_id'];
?>

在我正在做的AJAX部分:

$("#save").click(function () {
    var name = $('#name').val();
    var id = $('#release_id').val();
    var plan_id = $('#plan_id').val();
    //alert('hello');
    $.ajax({
        type: 'POST',
        url: '/api/api.php?action=put_iteration&name=' + name + '&id=' + id + '&plan_id=' + plan_id,
        data: "name=" + name + "&id=" + id + "&plan_id=" + plan_id,
        success: function () {
            $('#save').hide(function () {
                $('div.success').fadeIn();
            });
        }
    });
});

我对HTML隐藏字段一无所知。

4 个答案:

答案 0 :(得分:2)

不是一个PHP家伙,但有些想法。请原谅我的语法错误。

在循环中您正在创建具有相同ID的隐藏元素。这是不好的。更改Id的代码(应该始终是唯一的)。

<div>
foreach($plan_ids as $id)
{
    echo "<input type='hidden' id='plan-$id' value='$id' class='myHidden'>";
}

现在在您的脚本中,使用基于隐藏项

的jQuery选择器

var hiddenItems = $(“input [type ='hidden']”);

现在可以通过这个循环

   var items
   $.each(hiddenItems,function(item,index){
      items+= hiddenItems[index];
   });

或者你可以map这样运作,这样它就会给出一个逗号分隔的隐藏字段值列表。

   var itemsJoined=$("input[type='hidden']").map(function () {
        return this.value;
    }).get().join(',');

答案 1 :(得分:1)

我认为您希望将id='plan_id'更改为name='plan_id[]'作为开始....您只能拥有一个具有给定ID的元素(即,要求ID在元素中是唯一的给定页面。)

答案 2 :(得分:1)

您可以将所有隐藏字段命名为数组name="plan_id[]"

而不是将其作为字符串传递,您可以在隐藏字段周围使用包装FORM,然后使用jquery serialize function发布它

现在,您将在POST变量

中以数组的形式获取所有plan_id

添加示例

<?php
echo '<form name="planidform" id="planidform">';
foreach($plan_ids as $id)
{
    echo "<input type='hidden' name="plan_id[]" value='$id'>";
}
echo '</form>';
?>

在jQuery之后以下列方式执行:

data: "name=" + name + "&id=" + id + "&"+$("#planidform").serialize(),

答案 3 :(得分:1)

您应该为隐藏字段添加不同的名称/ ID。 如果你想立刻提交它们,你可以将它们存储在一个数组中。 例如:

$i=0;
foreach($plan_ids as $id){
$i++;
echo "<input type='hidden' id='plan_id_$i' value='$id'>";}

然后你可以在JS中解决或分组它们。