我正在尝试解析一些表单数据以生成要在ajax请求中发送的JSON数据。以下HTML是我的代码的过度简化版本。我正在使用APS.Net MVC4,我的渲染视图生成以下HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<link href="/Content/site.css" rel="stylesheet"/>
<script src="/Scripts/modernizr-2.6.2.js"></script>
</head>
<body>
<div class="test-class" data-my-attribute="1"></div>
<div class="test-class" data-my-attribute="2"></div>
<div class="test-class" data-my-attribute="3"></div>
<script src="/Scripts/jquery-1.8.2.js"></script>
<script type="text/javascript">
$(function () {
jsonObj = [];
$(".test-class").each(function () {
var myAttribute = $(this).data('my-attribute');
item = {}
item["MyAttribute"] = myAttribute;
jsonObj.push(item);
});
var data = { SomeOtherData: 1234, MyAttribs: jsonObj };
console.log(JSON.stringify(data));
});
</script>
</body>
</html>
在Chrome中,控制台中的输出按预期输出...
{
"SomeOtherData": 1234,
"MyAttribs": [{
"MyAttribute": 1
}, {
"MyAttribute": 2
}, {
"MyAttribute": 3
}]
}
...但在IE中,对象出现为null ...
{
"SomeOtherData": 1234,
"MyAttribs": [null, null, null]
}
我已经浏览过并发现了一些其他问题,建议检查页面中是否有<!DOCTYPE html>
(它确实如此)并且似乎没有任何效果。我也读到这应该从IE8开始工作,所以不确定发生了什么。
谢谢, 加文
答案 0 :(得分:10)
我看到的唯一奇怪的事情是:
item = {}
应该是:
var item = {}; // 'var' and semicolon
有时IE非常严格..