如何在jQuery ajax帖子中传递动态数据量

时间:2015-10-02 09:54:17

标签: javascript jquery ajax

$.ajax({
  url: '<?=parseLink("modules/Contacts/output/output.php")?>',
  data: { 
    $('.contacts-block-input-text').each(function(){
      id: $(this).attr('id'),
      value: $(this).val()
    })
  },
  type: 'post',
  success: function(result){
    $('.resultMessage').text(result)
  }
})

因此会有动态数量的输入字段,我需要收集所有contacts-block-input-text值并以某种方式在data字段中传递它们。我怎么能这样做?给出的示例不起作用。

3 个答案:

答案 0 :(得分:5)

您必须构建一个数组,收集输入数据:

var myData = [];
$('.contacts-block-input-text').each(function(){
  myData.push({
      id: $(this).attr('id'),
      value: $(this).val()
  });
});

然后您可以使用myData将其传递给ajax调用。

$.ajax({
  url: '<?=parseLink("modules/Contacts/output/output.php")?>',
  data: myData,
  type: 'post',
  success: function(result){
    $('.resultMessage').text(result)
  }
});

答案 1 :(得分:2)

您可以简单地遍历您的jQuery数组,合并数据对象,然后将其传递给AJAX调用:

var d = [];
$(".contacts-block-input-text").each(function() {
    d.push({ id: this.id, value: this.value });
});    

$.ajax({
    data: d
// ...

答案 2 :(得分:1)

您也可以使用$.map()生成数据对象并将其传递给ajax方法,如下所示。

var myData = $('.contacts-block-input-text').map(function() {
    return { 'id': this.id, 'value': this.value };
}).get();

$.ajax({
    url: '....',
    data: myData,
    //and so on... 
});