2014-09-28 3 views
0

Я пытаюсь обработать форму с помощью Ajax и возникли проблемы с обработкой. Я думал, что могу сделать массив внутри массива, который добавит отмеченные поля к объекту данных, но это, похоже, не работает. Он не отображается как часть объекта в консоли или что-то в этом роде. Я попробовал несколько вариантов и ничего не работал. Это то, что она выглядит в настоящее время:Массив внутри массива во время обработки javascript

var formData = { 
     'fname' : $('input[name=fname]').val(), 
     'lname' : $('input[name=lname]').val(), 
     'phone' : $('input[name=phone]').val(), 
     'email' : $('input[name=email]').val(), 
     'sqft' : $('select[name=sqft]').val(), 

     'checked': $('input[name=services[]]:checked').each(function(){ 
      checked.push($(this).val()); 
     }); 
    }; 

Я знаю, что я мог бы использовать serialize() но если честно я просто не знакомы с обработкой данных из этого метода. Поскольку мне нужно обработать данные с помощью PHP, я хотел придерживаться того, что знаю.

Это Разметка для флажков:

<div class="checks span6"> 
<p>Check which services you are interested in:</p><br> 

<input type="checkbox" name="services[]" value="janitorial"><p>Janitorial</p><br> 
<input type="checkbox" name="services[]" value="window"><p>Window cleaning</p><br> 
<input type="checkbox" name="services[]" value="carpet"><p>Carpet service</p><br> 
<input type="checkbox" name="services[]" value="restroom"><p>Restroom sanitation</p><br> 
<input type="checkbox" name="services[]" value="facility"><p>Facility Maintenance</p><br> 
<input type="checkbox" name="services[]" value="floors"><p>Floor strippin &amp; re-waxing</p><br> 
<input type="checkbox" name="services[]" value="moving"><p>Move in or move out</p><br> 
<input type="checkbox" name="services[]" value="other"><p>Other</p><br> 
</div> 
+0

Javascript Эйнт Явь a – Ghost

+0

oops. его действительно поздно, и я действительно устал ха-ха. – eignhpants

+0

Пожалуйста, включите ваш код с надписью – ekad

ответ

1

В настоящее время существует синтаксическая ошибка в размещенном коде, дополнительная ; после закрытия ) для метода each. Вам также следует избегать части атрибута атрибута name или обернуть его кавычками в вашем селекторе. Кроме того, вы храните объект jQuery вместо массива выбранных значений. Вы можете использовать метод map.

'checked': $('input[name="services[]"]:checked').map(function(){ 
     return this.value; 
    }).get() 
+0

это сработало, спасибо большое. Я не знал о функции '.map'. как обычно, я, вероятно, должен лучше проверить документацию. – eignhpants

0

Если вы открыты для изучения новых идей, вот как вы можете использовать .serialize() - очень прямо вперед, и ничего на стороне сервера (PHP) должен быть изменен:

var formData = $('form').serialize(); //THAT's it!! 

в вашем случае это будет производить следующий query string - уже URL закодированный - который является то, что текущие данные будут преобразованы раньше POST Инг:

services%5B%5D=janitorial&services%5B%5D=window&services%5B%5D=carpet&services%5B%5D=restroom&services%5B%5D=facility 
+0

Мне нужно разбирать его каким-либо особым образом? – eignhpants

+0

Нет. Трудно поверить, правда? Попробуй! – PeterKA