JSON.stringify在IE10中不起作用

时间:2013-11-19 09:42:37

标签: javascript jquery json internet-explorer cross-browser

我正在尝试解析一些表单数据以生成要在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开始工作,所以不确定发生了什么。

  1. 有没有人知道为什么对象在IE中显示为空?
  2. 最好的跨浏览器解决方案是什么?
  3. 谢谢, 加文

1 个答案:

答案 0 :(得分:10)

我看到的唯一奇怪的事情是:

  item = {}

应该是:

  var item = {}; // 'var' and semicolon

有时IE非常严格..