这个问题看起来很奇怪。我有一个AJAX帮助函数在一个相同的aspx文件和onreadystatechange事件是这样处理的AJAX调用中的onreadystatechange事件问题?
xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState == 4)
//do some opp
}
这工作正常。我可以读取回调中的xmlhttp值。
而我将AJAX帮助程序方法移至添加js文件。我已经创建了一个方法,像这样
function AjaxHelper() {
this.GetValue = function(sData, sMethod, assembly, json, aSyncfunction) {
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
if (typeof(aSyncfunction) != "undefined" && aSyncfunction != null) {
xmlhttp.onreadystatechange = aSyncfunction
}
//Ajax open and send code here
}
}
现在我在我的aspx文件中创建一个回调函数调用AjaxHelper.GetValue()函数
var callback=function(){
if (xmlhttp.readyState == 4)
//do some opp
}
AjaxHelper.GetValue("test","getTest()","UIhelper","",callback)
而且回调函数suceesfully每次叫状态改变后,但我不能引用xmlhttp变量。其总是未定义的。
虽然它会在AJaxhelper环境中执行,但它不是。
任何人都可以calrify我如何解决这个
感谢bobince为UR响应。有疑问。 “aSyncfunction.apply(this)”不会工作? – RameshVel 2009-11-11 12:13:56
如果'this'是正确的,它将起作用。如果你已经通过从其所有者对象中提取方法并将其传递给'onsomething'事件处理程序或'Timeout'来丢失对象引用,'this'将不会是你所期望的,并将它传递给函数将不会做任何好事。 – bobince 2009-11-11 12:19:07