如何使用ajax发送动态数据

时间:2013-08-28 05:22:28

标签: jquery 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(),
}

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

5 个答案:

答案 0 :(得分:3)

尝试使用$ .each jquery函数

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

答案 1 :(得分:2)

如果您的数据来自FORM ..您可以使用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'
        });

答案 2 :(得分:1)

您可以动态创建包含所有对象的对象:

var dataToPost = {};

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

然后像这样传递ajax调用

data: dataToPost,

答案 3 :(得分:0)

var objects = [];

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

答案 4 :(得分:0)

将所有输入添加到类中并使用$ .each函数

<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();
});