Javascript 敲除JS脚本在Chrome中工作,但在IE9中不工作

Javascript 敲除JS脚本在Chrome中工作,但在IE9中不工作,javascript,knockout.js,Javascript,Knockout.js,我有一个网页在Chrome上运行得很好,但在IE9上却不行。控制台上由此错误产生的错误是 SCRIPT5022:无法分析绑定。 消息:[对象错误]; 绑定值:foreach:statlist HTML格式如下: <html> <head> <title>TODO supply a title</title> <meta charset="UTF-8"> <meta name=

我有一个网页在Chrome上运行得很好,但在IE9上却不行。控制台上由此错误产生的错误是

SCRIPT5022:无法分析绑定。 消息:[对象错误]; 绑定值:foreach:statlist

HTML格式如下:

<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <div id="statsarea" data-bind="foreach: statlist">
           <p> TypeCount: <strong data-bind="text: TypeCount"></strong>, Priority: <strong data-bind="text: SentDate"></strong>
            <br/>
           </p>

    </div>


        <script src="js/jquery-1.9.0.js" type="text/javascript"></script>
        <script src="js/knockout-2.2.1.js" type="text/javascript"></script>
        <script src="models/messagecount.js" type="text/javascript"></script>

    </body>
</html>
还有一条信息是,来自API的json看起来像这样。我不确定是不是因为TypeCount不是字符串

[
    {
        "TypeCount": 102,
        "SentDate": "2014-08-18T00:00:00.000Z"
    }
]

使用
async:false
不是一个好主意。这可能是因为您没有在ViewModel中将
statlist
初始化为属性。更好的解决方案是将
statlist
设置为一个可观察的数组,然后在准备好设置数据时进行异步调用

例如:

function MessageCountDataModel() {
    var self = this;

    self.statlist = ko.observableArray();

    self.loadData = function() {
        $.ajax({
            'url': "http://localhost:8080/API/getstats.json",
            'datatype': "json",
            'success': function(data) {
                self.statlist(data);
            }
        });
    };

    self.loadData();
}

ko.applyBindings(new MessageCountDataModel());

为什么要将
allCounts
设置为调用一个永远不会返回任何内容的函数的结果?我喜欢这样,但它在IE.9中仍然不起作用。现在我甚至没有看到任何HTML被生成。Chrome仍然工作得很好。我只是检查了Firefox,它也在Firefox中工作。只是IE9不起作用不确定为什么…有可能在IE9和其他浏览器下给出一个可重现错误的链接吗?我想我可能已经想到了这个问题。我的测试web服务器在端口3000上运行,RESTAPI在同一台机器的不同部分上。我相信这与IE中的跨源代码有关,我现在只需要知道如何修复:)我想知道您是否为API和客户端使用了两个不同的端口,以及它在Chrome和FF上的工作方式。您需要使用相同的端口,或者可能需要将响应转换为JSONP而不是JSON。
function MessageCountDataModel() {
    var self = this;

    self.statlist = ko.observableArray();

    self.loadData = function() {
        $.ajax({
            'url': "http://localhost:8080/API/getstats.json",
            'datatype': "json",
            'success': function(data) {
                self.statlist(data);
            }
        });
    };

    self.loadData();
}

ko.applyBindings(new MessageCountDataModel());