Internet Explorer 9和javascript变量范围问题

此代码适用于Chrome和Firefox但不适用于IE9 …需要一些提示……

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

更新:

谢谢你的帮助……

这是来自ie9的问题,即抛出了错误代码“c00ce56e” – 这是charset的一个问题。 我将在php脚本中尝试另一个标题…

thx @ all

你的代码看起来很好,除了在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)); }); 

请注意,在它的当前forms中,您必须先调用.json(),然后才能向请求添加回调。