這個問題看起來很奇怪。我有一個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