用面向对象的方式写了个Ajax,回调函数报错,高人给看看
时间:2011-02-22
来源:互联网
JScript code
function Ajax(callback) { this.xmlreq = this.getXMLRequest(); this.callback = callback; } /* * 获取XMLHttpRequest对象 */ Ajax.prototype.getXMLRequest = function() { var xmlHttpRequest = null; if (window.XMLHttpRequest) { xmlHttpRequest = new XMLHttpRequest(); } else if (typeof ActiveXObject != "undefined") { xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } return xmlHttpRequest; }; /* * 发送请求 */ Ajax.prototype.sendRequest = function(url, params, HttpMethod) { if (!HttpMethod) { HttpMethod = "GET"; } if (this.xmlreq) { this.xmlreq.onreadystatechange = this.selfCallback; this.xmlreq.open(HttpMethod,url,true); this.xmlreq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); this.xmlreq.send(params);// 请求是发送成功的,后台有日志打印 } // 这里打印的是[object] alert(this.xmlreq); }; /* * 回调函数 */ Ajax.prototype.selfCallback = function() { // 这里打印的是[undefined],然后就报错了。。。。 alert(this.xmlreq); var ready = this.xmlreq.readyState; var data = null; if (ready == 4) { data = this.xmlreq.responseXML; } else { data = "loading... " + ready; return; } this.callback(data); };
作者: redstarofsleep 发布时间: 2011-02-22
JScript code
this.xmlreq.onreadystatechange = (function(o) { return function() { o.selfCallback(); } })(this);
作者: danica7773 发布时间: 2011-02-22
引用 1 楼 danica7773 的回复:
JScript code
this.xmlreq.onreadystatechange = (function(o) {
return function() {
o.selfCallback();
}
})(this);
能解释下这样改是什么意思吗?为什么要这样改,原来那样错哪了? JScript code
this.xmlreq.onreadystatechange = (function(o) {
return function() {
o.selfCallback();
}
})(this);
作者: redstarofsleep 发布时间: 2011-02-22
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28