2013-08-28 28 views
0

发送动态数据通常情况下,我们必须像一个Ajax请求:如何使用AJAX

$.ajax({ 
    type: 'GET', 
    url: "/biboundsoptimization", 
    data: { 
     objects: '2', 
    }, 
    success: function (data) { 
     console.log(data); 
     alert(data); 
    }, 
    error: function (data, status, er) { 
     alert("error: " + data + " status: " + status + " er:" + er); 
    } 
}); 

但我现在不知道在数据字段变量的数目。例如,当客户端进入2的数据字段应该是这样的:

data: { 
    objects1: value of objects1, 
    objects2: value of objects2, 
}, 

如果客户端进入3的数据字段应该是这样的:

data: { 
    objects1: value of objects1, 
    objects2: value of objects2, 
    objects3: value of objects3, 
}, 

Ajax请求之前,所述客户端具有已将每个对象的值输入到不同的输入字段中。但是我不知道这个数字,直到他进入它。所以我不能像上面那样写。很明显,需要循环遍历客户端提供的循环数来获取所有对象。我试图类似:

for (int i = 1; i < clientValue; i++) { 
    'objects' + i: $('#objects' + i).val(), 
} 

但它不起作用。从语法上来说这是错误的。任何人都可以帮助我吗?谢谢!

+0

你得到什么错误?你在clientValue中有一个有效的值吗? – Nitesh

+1

为什么不把所有的值放入数组中,然后将数组传递给你的ajax调用? – DiMono

回答

1

您可以动态创建一个包含所有类似的对象的对象:

var dataToPost = {}; 

for(int i = 1; i < clientValue; i++){ 
    dataToPost['objects' + i] = $('#objects' + i).val(); 
} 

然后通过在Ajax调用这样

data: dataToPost, 
2

尝试使用$。每个jQuery函数

var data = {}; 
$('#objects input').each(function(){ 
    data.push(this.value); 
}); 
+0

它不会创建一个对象,这不是OP询问的对象。 – zsong

0
var objects = []; 

for(int i = 1; i < clientValue; i++){ 
     objects[i]: $('#objects' + i).val(), 
} 
0

add类太所有的输入,并使用$。每个功能

<input id="object1" class="object" /> 
<input id="object2" class="object" /> 
var data = {}; 
var id; 
$('.object').each(function(){ 
    id = $(this).attr('id'); 
    data[id] = $(this).val(); 
}); 
2

如果你的数据从一个表单来的..你可以使用jQuery的序列化功能,同时自动换一切,为你。

 var formData = $('#yourform').serialize(); 

可以然后做一些像这样的事情在你的Ajax请求

 var request = $.ajax({ 
      type: 'POST', 
      url: 'ajaxHandler.php', 
      cache: false, 
      data: formData, //all the data is automatically ready for you now 
      dataType: 'json' 
     });