1

我得到数据未定义,我想我不能 ['productId'] 在数组中,但我认为我需要 json 中的这种结构,我尝试了一些变化但它从来没有,我需要什么我只是想通过ajax发送一个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()});

有没有更好的方法呢?或者我怎样才能让它工作?帮助表示赞赏;/

4

1 回答 1

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,在表单中发布所有内容并在服务器上对其进行排序。

于 2012-06-09T09:22:36.307 回答