我需要将一些序列化的表单元素传递给函数,以将它们作为JSON对象返回。我写了这个函数,但是 fieldName 在json对象中以“fieldName”而不是实际的字段名称结束,即; “PositionId”或“系列”。但值是正确的。 JS不允许我使用field.name,但它允许使用field.value,这就是为什么我必须创建var fieldName。这是功能:
function SerializedFormToJSON(serializedForm){
var myJSONObject = {};
var fieldName = "";
$.each(serializedForm, function(i, field) {
fieldName = field.name;
if (field.value != "" && field.value != "ALL") {
myJSONObject = { fieldName: field.value };
}
});
return myJSONObject;
}
答案 0 :(得分:3)
除了您遇到的问题之外,您还在循环的每次迭代中重新创建对象。您设置属性的行应为:
myJSONObject[fieldName] = field.Value;
完成功能:
function SerializedFormToJSON(serializedForm){
var myJSONObject = {};
var fieldName = "";
$.each(serializedForm, function(i, field) {
fieldName = field.name;
if (field.value != "" && field.value != "ALL") {
myJSONObject[fieldName] = field.value;
}
});
return myJSONObject;
答案 1 :(得分:0)
myJSONObject[fieldName] = field.value;
答案 2 :(得分:0)
尝试使用数组下标表示法:
myJSONObject[fieldName] = field.value;