此代码在Chrome和Firefox,但不是在IE9 ...需要一些提示...
var obj = {
data: [],
json: function() {
var self = this;
$.getJSON("highscore.json", function(resp) {
self.data = resp.splice(0);
});
}
};
更新:
THX您的帮助...
它是从IE9的一个问题,即已经抛出了错误代码“c00ce56e” - 这是用字符集的问题。 我会尝试在PHP脚本的另一头...
THX @所有
您的代码看起来好像没什么问题,比其他的数据将不被填充,直到JSON请求完成,这是不即时,因为AJAX是异步的。
obj.json();
alert(obj.data); // []
setTimeout(function(){
alert(obj.data); // ["foo","bar","foobar"]
},5000);
更新
我建议增加一个属性到您的对象调用请求,并存储在它的$ .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(),然后才能添加回调的要求。