this.showResponse = function(request) 

var xml = request.responseXML; 
var list = xml.selectNodes( "/Categories/Category"); this.test=3; 
alert(this.test); 

在这里面this发生了变化并非是c了.所以没有test这个属性.
this.get = function() 

var url='http://*.*.*.*/response.aspx'; 
var pars=''; 
var myAjax = new Ajax.Request(url,{method: 'get',parameters: pars,onComplete: this.showResponse(request,this)});this.test=2; 
} this.showResponse = function(request,o) 

var xml = request.responseXML; 
var list = xml.selectNodes( "/Categories/Category"); o.test=3; 
alert(o.test); 

改成这样试试

解决方案 »

  1.   

    还是不行...我觉得原因可能在于prototype中对响应函数的定义类似于这样:
    if (XMLHttp.readyState == 4 && (XMLHttp.status == 200 || XMLHttp.status == 304))
                        {
                            callback(XMLHttp.responseXML);
                        }
    如果改变了响应函数的参数那在callback的时候函数就不会执行下去了...PS:是不是在this.showResponse中showResponse成了get的子函数从而this指向了showResponse方法?