Jquery, добавить значение в массив в каждом цикле - PullRequest
5 голосов
/ 22 марта 2011

У меня есть приложение jQuery, где пользователь может добавлять элементы в список из поля ввода.Я хочу поместить все элементы в массив при отправке формы, чтобы позже я мог манипулировать ими с помощью php.Это правильный способ сделать это?

jQuery:

$("#form").submit(function(){
   var items = [];
   $("#items li").each(function(n){
      items[n] = $(this).html();
   });
   $.post(
      "process.php", 
      {items: items}, 
      function(data){
          $("#result").html(data);
      });
});

PHP:

$items = $_POST["items"];
foreach($items as $item){
    //Something here
}

1 Ответ

13 голосов
/ 22 марта 2011

Идея звучит.Что не очень понятно, так это то, что ваш пример заполняет items сейчас, но обработчик submit, конечно, будет вызван в какой-то момент в будущем.Возможно ли, что элементы списка могли измениться к этому времени?

Если это так, вам нужно переместить код «упаковать элементы» в обработчик submit, например:

$("#form").submit(function(){
    var items = [];
    $("#items li").each(function(n){
        items[n] = $(this).html();
    });

   $.post(
      "process.php", 
      {items: items}, 
      function(data){
          $("#result").html(data);
      });
});
...