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

配列のようにすべての非表示フィールドに名前を付けることができますname="plan_id[]"

また、文字列として渡す代わりに、非表示フィールドをFORMでラップしてから、jqueryシリアル化関数を使用してPOSTすることができます。

これで、すべてのplan_idがPOST変数の配列の形式で取得されます。

例を追加する

<?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 に答える
1

id='plan_id'最初に変更したいと思いますname='plan_id[]'....指定されたIDを持つ要素は1つだけ許可されます(つまり、idは特定のページの要素間で一意である必要があります)。

于 2012-05-08T19:33:29.443 に答える