Internet Explorer 9 和 JavaScript 变量范围问题
internet explorer 9 & javascript variable scoping issue
此代码适用于Chrome和Firefox,但不适用于IE9...需要一些提示...
var obj = {
data: [],
json: function() {
var self = this;
$.getJSON("highscore.json", function(resp) {
self.data = resp.splice(0);
});
}
};
更新:
感谢您的帮助...
这是IE9的问题,IE 抛出了错误代码"C00ce56e" - 这是字符集的问题。我将尝试 PHP 脚本中的另一个标头...
谢谢 @ 全部
你的代码对我来说看起来不错,除了在 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(),然后才能向请求添加回调。
相关文章:
- js命名空间和变量范围
- 如何确保变量范围在这个循环中得到维护
- 在两个浏览器选项卡之间共享变量范围
- 文件API中的Javascript变量范围
- javascript和jQuery的嵌套对象函数中的变量范围
- JavaScript 函数变量范围问题
- JavaScript 中变量范围的问题
- Javascript - 揭示对象和变量范围
- 主干.js(具有 Require.js)变量/范围访问问题
- Javascript 变量范围未定义
- 如何绕过javascript变量范围
- IE 8变量范围错误
- 了解 Javascript 变量范围
- 控制变量范围
- 函数之间的Javascript变量范围问题
- 这种减少if语句中声明的变量范围的模式是一种好的做法吗
- 用于未初始化的局部变量的javascript变量范围
- 变量范围
- 请求节点模块变量范围
- Javascript 和 JQuery dom 全局变量范围