2012-05-08 3 views
0

Я создаю всплывающее диалоговое окно, где мне нужно поместить набор значений в скрытый формат, но когда я получаю значение в сообщении AJAX, я получаю только последнее значение.Несколько скрытых полей в HTML

это 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 скрытых полей. Любая помощь будет полезна.

+0

Когда пользователь нажимает '# save', вы хотите захватить значение определенного' # plan_id' или всех из них? – benastan

ответ

1

вы можете назвать все ваши скрытые поля как массив name="plan_id[]"

И вместо передачи его в виде строки, вы можете иметь форму оберточной вокруг скрытых полей, а затем использовать jquery serialize function запостить

Теперь вы получите все 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(), 
+0

это сработало спасибо! –

+0

рад, что это помогло ..., уделяйте немного больше внимания основам ... и вам понравится это сочетание html/php/js ... добро пожаловать в веб-мир – swapnilsarwe

1

Я думаю, вы хотите изменить id='plan_id' на name='plan_id[]' для начала .... вам разрешено иметь только один элемент с заданным идентификатором (то есть идентификатор должен быть уникальным для всех элементов на данной странице).

+0

Я согласен с именем в качестве массива для решения – swapnilsarwe

+0

@ swapnilsarwe-ваше решение сработало. Благодаря вам столько –

2

Не парень PHP, но некоторые мысли. Простите меня за синтаксические ошибки.

В цикле Вы создаете скрытый элемент с тем же идентификатором. Это не хорошо. Измените код sot hat, на котором будет ID (ДОЛЖНО БЫТЬ ВСЕГДА).

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

Теперь в вашем скрипте, использовать JQuery селекторы на основе скрытого элемента

вар hiddenItems = $ ("вход [тип = 'скрытый']");

может быть теперь вы можете цикл через этот

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

Или вы можете map функцию, как это так, что это даст список значений скрытых полей через запятую.

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

вы должны поставить diffrent имена/идентификаторы для скрытых полей. Если вы хотите отправить их сразу, вы можете сохранить их в массиве. , например:

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

то и может обратиться или сгруппировать их в JS.

+0

его показ не определен в сообщении ajax! –

Смежные вопросы