2012-06-09 1 views
1

Я получаю данные неопределенными, я думаю, я не могу ['productId'] в массиве, но я думаю, что мне нужна эта структура в json, я попробовал пару вариантов, но это никогда не было, что мне нужно Я просто хочу отправить json через ajax.собственный массив + jQuery.serializeArray() + сообщение как json

jQuery(':checked').each(function(i){ 
    data[i]['productId'] = jQuery(this).parent().find('.productId').val(); 
    jQuery(this).parent().find('.attrGrp').each(function(j){ 
    data[i]['attrGrps'][j]['uid'] = jQuery(this).find('.active').attr('id'); 
    data[i]['attrGrps'][j]['amount'] = jQuery(this).parent().find('.amount').val(); 
    }); 
}); 
jQuery.post(newSession, {json: data.serializeArray()}); 

Есть ли лучший способ для этого? или как я могу заставить его работать? help appreciated;/

ответ

0

Перед использованием необходимо инициализировать массивы и объекты. Индексы строк возможны только с объектами. Попробуйте это:

var data = []; 
jQuery(':checked').each(function(i) 
{ 
    data[i] = {}; 
    data[i].productId = jQuery(this).parent().find('.productId').val(); 
    data[i].attrGrps = []; 
    jQuery(this).parent().find('.attrGrp').each(function(j) 
    { 
    data[i].attrGrps[j] = {}; 
    data[i].attrGrps[j].uid = jQuery(this).find('.active').attr('id'); 
    data[i].attrGrps[j].amount = jQuery(this).parent().find('.amount').val(); 
    }); 
}); 

В качестве альтернативы можно использовать jQuery().serialize, разместить все в форме и разбирайтесь на сервере.

+0

привет! Спасибо за твой ответ! я искал именно это! Сериализация - хорошая идея, но я не буду работать в моем случае. – dni