объединить элементы формы в объект? - PullRequest
1 голос
/ 06 июня 2010

Я пытаюсь объединить элементы формы в объект и затем отправить его через ajax. Вот код, который я начинаю использовать, но я не могу понять, как сделать остальное

$('.jcart').live('submit', function() {

});

Обновление 1:

HTML-форма

http://pasite.org/code/572

Обновление 2:

Я успешно отправил форму, используя ajax, но она все еще обновляет страницу после отправки

это то, что я сделал

function adding(form){
$( "form.jcart" ).livequery('submit', function() {var b=$(this).find('input[name=<?php echo $jcart['item_id']?>]').val();var c=$(this).find('input[name=<?php echo $jcart['item_price']?>]').val();var d=$(this).find('input[name=<?php echo $jcart['item_name']?>]').val();var e=$(this).find('input[name=<?php echo $jcart['item_qty']?>]').val();var f=$(this).find('input[name=<?php echo $jcart['item_add']?>]').val();$.post('<?php echo $jcart['path'];?>jcart-relay.php',{"<?php echo $jcart['item_id']?>":b,"<?php echo $jcart['item_price']?>":c,"<?php echo $jcart['item_name']?>":d,"<?php echo $jcart['item_qty']?>":e,"<?php echo $jcart['item_add']?>":f}                                            
});
 return false;                                                  
}

Ответы [ 2 ]

3 голосов
/ 06 июня 2010

В jQuery есть метод .serialize (), который может взять все элементы формы и поместить их в массив только для того, что вы пытаетесь сделать. Не смотря на ваш html, мы действительно не можем рассказать вам намного больше.

http://api.jquery.com/serialize/

Что-то вроде этого может работать:

$('.jcart').submit(function() {
   $.ajax({
      url : form.php,
      type : "POST",
      data : $(this).serialize(),
   });
});

Очевидно, что для полной функциональности потребуется немного больше, но с этого следует начать.

0 голосов
/ 06 июня 2010

В зависимости от того, сколько значений вам нужно (и есть ли у вас такие вещи, как переключатели), вы можете начать с селектора :input, чтобы получить элементы. Предполагая, что .jcart является вашей формой или контейнером, что-то вроде этого:

var data = {};
$('.jcart').find(':input').each(function (i, field) {
  if ($(field).is('input:checkbox') {
    if (field.checked) { 
      data[field.name] = true; 
    } else {
      data[field.name] = false;
    }
  } else {
    data[field.name] = $(field).val();
  }
});

Это должно начать вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...