我也愿意接触其他方法 - 我想要做的就是返回一个变量名称(cn,sc,fn)的JSON字符串及其值(例如var cn = $('#deFNIN').val();
- 所以:"cn":"MacDonalds","sc":"Mac"
)
HTML:
<input id="deCoNameIN" type="text" value="MacDonalds" /><br>
<input id="deShortCoIN" type="text" value="Macs" /><br>
<input id="deFNIN" type="text" value="Fred" /><br>
js/jQ:
var objFields = {
'cn': { 'id':'deCoNameIN', 'required':'True', 'title':'Company Name'},
'sc': { 'id':'deShortCoIN', 'required':'True', 'title':'Short Co name' },
'fn': { 'id':'deFNIN', 'required':'false', 'title':'Contact first name' },
};
var arrDistinfo = [];
$.each(objFields,function(_, varname){
tmp = $("#"+varname.id).val().trim();
alert('Varname: ' +_+' Val: '+tmp);
arrDistinfo.push({_ : tmp});
});
var xx = JSON.stringify(arrDistinfo);
alert(xx);
所需的输出应如下所示:
["cn":"Macdonalds", "cs":"Macs", "fn":"Fred"]
答案 0 :(得分:3)
您不能使用类似对象键之类的变量(在您的情况下,{_ : tmp}
与{"_" : tmp}
相同),您需要数组表示法:
var objFields = {
'cn': {
'id': 'deCoNameIN',
'required': 'True',
'title': 'Company Name'
},
'sc': {
'id': 'deShortCoIN',
'required': 'True',
'title': 'Short Co name'
},
'fn': {
'id': 'deFNIN',
'required': 'false',
'title': 'Contact first name'
},
};
var arrDistinfo = [];
$.each(objFields, function(_, varname) {
tmp = $("#" + varname.id).val().trim();
alert('Varname: ' + _ + ' Val: ' + tmp);
var obj = {};
obj[_] = tmp;
arrDistinfo.push(obj);
});
var xx = JSON.stringify(arrDistinfo);
alert(xx);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="deCoNameIN" type="text" value="MacDonalds" />
<br>
<input id="deShortCoIN" type="text" value="Macs" />
<br>
<input id="deFNIN" type="text" value="Fred" />
<br>
&#13;
更新
要获得该特定格式,您需要将其设为字符串,因为JS不具有类似数组的结构。
var objFields = {
'cn': {
'id': 'deCoNameIN',
'required': 'True',
'title': 'Company Name'
},
'sc': {
'id': 'deShortCoIN',
'required': 'True',
'title': 'Short Co name'
},
'fn': {
'id': 'deFNIN',
'required': 'false',
'title': 'Contact first name'
},
};
var arrDistinfo = {};
$.each(objFields, function(_, varname) {
tmp = $("#" + varname.id).val().trim();
arrDistinfo[_] = tmp;
});
var output = [];
for (var i in arrDistinfo) {
output.push('"' + i + '":"' + arrDistinfo[i] + '"');
}
alert('[' + output.join(', ') + ']');
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="deCoNameIN" type="text" value="MacDonalds" />
<br>
<input id="deShortCoIN" type="text" value="Macs" />
<br>
<input id="deFNIN" type="text" value="Fred" />
<br>
&#13;