1

通常,我们有一个 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(),
}

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

4

5 回答 5

3

尝试使用 $.each jquery 函数

var data = {};
$('#objects input').each(function(){
    data.push(this.value);
});
于 2013-08-28T05:25:28.977 回答
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'
        });
于 2013-08-28T14:59:34.767 回答
1

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

var dataToPost = {};

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

然后像这样传入ajax调用

data: dataToPost,
于 2013-08-28T05:25:17.080 回答
0
var objects = [];

for(int i = 1; i < clientValue; i++){
       objects[i]: $('#objects' + i).val(),
}
于 2013-08-28T05:26:15.920 回答
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();
});
于 2013-08-28T05:30:32.980 回答