使用for循环创建有效的json数据

时间:2013-08-29 10:24:55

标签: jquery

我想在Jquery中创建一个Json数据。

因为我这样做。我在"customParam'+i+'Key:"

取代错误
var counter=4;
var data;
    for(i=1; i<counter; i++){                 
             data = {
               "Param'+i+'Key:" : $('#key' + i).val(),
               "Param'+i+'Value:" : $('#value' + i).val()    
            }; 
    } 

执行循环操作后,我的数据将是

data={
             "Param1Key": testkey
             "Param1Value": ttestval
             "Param2Key":testkey
             "Param2Value": testval
             "Param3Key":testkey
             "Param3Value": ...
             "Param4Key":...
             "Param4Value": ...

};

我也想将"job": $('#job').val(),"names": $('#names').val()追加到data。怎么可能???

我的结果数据将在下面

数据= {

             "job": $('#job').val(),
             "names": $('#names').val(),
             "Param1Key": testkey,
             "Param1Value": ttestval,
             "Param2Key":testkey,
             "Param2Value": testval,
             "Param3Key":testkey,
             "Param3Value": ...,
             "Param4Key":...,
             "Param4Value": ...,

};


$.ajax({
            type: 'post',
            url: "/save",
            dataType: "json",
            data: data,

        });

3 个答案:

答案 0 :(得分:2)

data必须是这样的。 单引号或双引号

"Param"+i+"Key:" : $('#key' + i).val(),
"Param"+i+"Value:" : $('#value' + i).val()    

追加,请尝试这样

data.job = $('#jobid').val();  
data.names = $('#names').val();

答案 1 :(得分:1)

这应该让你去。

var data = {
    "job": $('#job').val(),
    "names": $('#names').val()
};
for(i = 1; i <= 4; i++) {
    data["Param" + i + "Key"] = $('#key' + i).val();
    data["Param" + i + "Value"] = $('#value' + i).val();
} 
// Do things with data here

答案 2 :(得分:1)

JSON只是一种表示JavaScript对象的文本格式。构建用于提交AJAX函数的对象时,您不需要使用JSON。

AJAX函数的dataType参数是指您希望从服务器返回的数据类型。这就是JSON的用武之地。

您可以先创建结构,然后在循环时将值作为关联数组添加到其中。

var counter=4;
var data = {};
    for(var i=1; i<counter; i++){                 
          data["Param"+i+"Key"] = $('#key' + i).val();
          data["Param"+i+"Value"]= $('#value' + i).val();
    } 
data.job = $('#job').val();
data.names = $('#names').val();