我的jQuery有点生疏,无法记住如何生成json对象。我试图从我的序列化方法创建下面的json但它没有用其他任何东西填充标签然后两个值?
function serializeObject() {
var o = {};
o["CompanyTemplateId"] = CompanyTemplateId;
o["Tags"] = [];
$("[id^=DQTag]").each(function () {
o["Tags"].push({'TagKey': $(this).id, 'TagValue': $(this).value});
});
return o;
};
我希望它看起来像:
{"CompanyTemplateId": "1",
"Tags":[
{"TagKey":"news1","TagValue":"This is a news item from tagValue."},{"TagKey":"news2","TagValue":"Second value"}
]
}
我得到的结果是:
{"CompanyTemplateId":"1","Tags":[{},{}]}.
标签中的对象数量是正确的,但为什么没有任何键/值对?
答案 0 :(得分:0)
"
:"TagKey":"news1","TagValue":"This is a news item from tagValue.},
Quote missing here --------------------------------------------^
JSON.stringify(o, null, 2);
答案 1 :(得分:0)
看看这个功能。它似乎做了你想要的,也在IE9上。
function() {
var o = {};
o["CompanyTemplateId"] = 123;
o["Tags"] = new Array();
$("[id^=DQTag]").each(function(i , e) {
o["Tags"][i] = new Object(); {
o["Tags"][i].TagKey = e.id;
o["Tags"][i].TagValue = e.value;
};
});
console.log(o.Tags.length);
console.log(o);
console.log(JSON.stringify(o));
return o;
};
答案 2 :(得分:0)
如果您在序列化JSON时担心浏览器支持,可以使用the JSON2.js library,它提供跨浏览器支持。包含它并使用JSON.stringify
将对象序列化为JSON或JSON.parse
以将JSON解码为对象。
答案 3 :(得分:0)
您无法使用$(this).id
,请尝试$(this).attr('id')
。对于值,请使用$(this).val
或$(this).attr('value')
;
答案 4 :(得分:0)
所以我想出了它失败的原因。这是因为我使用$(this)
而不仅仅是这个。
wokring code:
o["Tags"].push({'TagKey': this.id, 'TagValue': this.value});