Создание ассоциативного массива / хеша в JavaScript - PullRequest
2 голосов
/ 08 сентября 2010

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

$('#accessoriesOptions input').each(function(index, value){
    if($(this).attr('checked') ){
        var newItem =[];
        var obj = {};
        obj[$(this).attr('value')] = $(this).attr('name'); //I have an hash table with the key-value
        wizard.searchArray.push(obj);
    }            
})

$.ajax({
   data : wizard.searchArray
})

Я получаю массив wizard.searchArray:

   [0] = {'acc_1' : 'vase'},
   [1] = {'acc_3' : 'ceramic'}

Мне нужно создать ключ-значение, так как я использую ключ, чтобы определить, какую часть фильтрации использовать.

Проблема

Когда я делаю запрос ajax, из firebug я вижу запрос как:

/ мастер-демо /? = Не определено не определено и не определено = не определено

1 Ответ

5 голосов
/ 08 сентября 2010

В этом случае просто нажмите добавить свойства к obj и используйте его напрямую, это пара, которая получит сериализованное свойство при использовании в качестве свойства data, например:

var obj = {};
$('#accessoriesOptions input').each(function(index, value){
    if(this.checked){
        obj[this.value] = this.name;
    }            
})

$.ajax({
   data : obj
});

Хотя это в обратном направлении от обычного <form> представления, если это то, что вы хотите, это вместо этого:

obj[this.name] = this.value;

Если вы хотите отправить всю форму, есть гораздо более короткий / встроенный .serialize() метод для этого:

$.ajax({
   data : $("#accessoriesForm").serialize()
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...