1

此代码在 Chrome 和 Firefox 中有效,但在 IE9 中无效……需要一些提示……

var obj = {
    data: [],

    json: function() {
        var self = this;
        $.getJSON("highscore.json", function(resp) {
            self.data = resp.splice(0);
        });
    }
};

更新:

谢谢你的帮助...

这是来自 ie9 的问题,即抛出了错误代码“c00ce56e” - 这是字符集的问题。我会在 php 脚本中尝试另一个标题...

谢谢@所有

4

1 回答 1

4

您的代码对我来说看起来不错,除了在 json 请求完成之前不会填充数据,这不是即时的,因为 ajax 是异步的。

obj.json();
alert(obj.data); // []
setTimeout(function(){
    alert(obj.data); // ["foo","bar","foobar"]
},5000);

更新
我建议向您的对象添加一个名为 request 的属性,并将 $.getJSON 请求存储在其中。那时将数据直接存储在对象上是没有意义的,因为您总是可以从请求中获取它。

var obj = {
    request: {done:$.noop,fail:$.noop,always:$.noop},

    json: function() {
        this.request = $.getJSON("highscore.json");
    }
};
obj.json();
// you can run the following as many times as you need to use the data.
obj.request.done(function(data){
    alert(data.splice(0));
});

请注意,在当前形式下,您必须先调用 .json() 才能向请求添加回调。

于 2012-04-25T18:02:55.060 回答