2013-06-20 4 views
0

Я надеюсь, что это не ответило где-то :)Создать Jquery массив из массива имени входного

Я использую follwing формы поле ввода, чтобы позволить клиентам обновлять количество элементов в их корзине:

<input type="text" name="item_qty[<?php echo $product['product_id']; ?>]" value="<?php echo $product['product_qty']; ?>"> 

Таким образом, каждый элемент в корзине имеет поле ввода, как указано выше, и есть одна кнопка отправки, чтобы обновить все количество товаров за один раз.

Моя проблема заключается в том, что я не могу решить, как создать требуемый массив в jquery для отправки через ajax с помощью массива в элементе name (я хочу, чтобы это было как можно больше, если это возможно, поскольку я хочу, чтобы форма работайте как нормальная передача в PHP-файл, если есть причина, по которой jquery не может быть инициализирован).

Я думал, что, возможно, имя должно быть ключом из массива корзины, но не уверен. Может ли кто-нибудь посоветовать лучший способ сделать это, и если это сохранить поле ввода так, как оно есть сейчас, как я получу необходимые данные для создания массива в jquery, пожалуйста.

+2

Try '$ ('форма') сериализующих(); ' –

+1

Google - ваш друг: [учебник здесь] (http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/) –

+0

I имеют Googled - много раз, используя разные термины, и я только что посмотрел на этот учебник, и это не помогает в моем вопросе. Я уже успешно использую jquery/ajax при отправке нормальных форм и знаю, как создать массив для отправки через ajax. Моя проблема заключается в создании массива из массива в элементе имени поля ввода (и сериализация не работает) –

ответ

0

Итак, если вы правильно поняли, что у вас есть какой-то результат, подобный этому?

<input type="text" name="item_qty[0]" value="4"> 
<input type="text" name="item_qty[1]" value="1"> 
<input type="text" name="item_qty[2]" value="3"> 
<input type="text" name="item_qty[3]" value="7"> 

и вы хотите результат, с чем-то вроде:

[{item_qty[0], 4}, {item_qty[1], 1}, ...] 

Если это правильно, я бросил что-то вместе в этой скрипкой: http://jsfiddle.net/N6eBZ/

EDIT: Для ассоциативной массив, вам нужно создать объект JS, см. эту скрипту: http://jsfiddle.net/KyleMuir/N6eBZ/1/

Надежда это помогает

+0

Спасибо, Кайл, это практически то, что я ищу, но теперь я застрял в том, как получить значения в ассоциативный массив, например {item_qty [0]: 4} для отправки через ajax. То, что я получаю при выводе на консоль (без toString), - это ["item_qty [4]", "3", "item_qty [1]", "2"] –

+0

@ user1260846 См. Edit. –

+0

Кайл, спасибо. Я получил его в конце, используя ваш скрипт, просто нужно было долгое время заставлять PHP работать, но теперь все отсортировано. –

0

var obj = {}; .

`$ каждый ('вход') (функция (индекс, значение) { OBJ [this.name] = this.value;

});`

0

Я раздвоили принял ответ и переписал его, чтобы использовать $ .map(), что может быть более подходящим, чем $ .each(). $ .map() предназначена для такого рода применения: построение массива из результатов запроса DOM:.

var results = $('[name^=item]').map(function() { 
    var $this = $(this), 
     jsObject = {}; 

    jsObject[$this.attr('name')] = $this.val(); 
    return jsObject; 
}).get(); 

Here's a Fiddle.

Here's the documentation for $.map

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