0

我正在创建一个弹出对话框,我需要在其中以隐藏格式放置一组值,但是当我在 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

4 回答 4

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(',');
于 2012-05-08T19:33:32.410 回答
1

我认为您想更改id='plan_id'name='plan_id[]'开始...。您只能拥有一个具有给定 id 的元素(即 id 必须在给定页面中的元素之间是唯一的)。

于 2012-05-08T19:33:29.443 回答
1

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

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

现在您将在 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(),
于 2012-05-08T19:35:52.543 回答
1

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

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

然后你可以在 JS 中对它们进行寻址或分组。

于 2012-05-08T19:36:09.507 回答