关于Ajax的回执函数传递参数的问题!

hrz136 2008-12-16 03:05:47

如何才能给回执函数传递参数呢?想把 ControlID 这个参数值传递到GetCityResult()这个函数里,怎么传呢?

如果把 xmlHttp.onreadystatechange=GetCityResult;
改成 xmlHttp.onreadystatechange=GetCityResult(ControlID);

然后下面的函数 GetCityResult()加个参数 GetCityResult(ControlID),就会出错了,不知道怎么办...

function GetProCity(ControlID)
{
createXMLHttpRequest();
var url= "../Ajaxashx/Provinceashx.ashx?cid="+ProID;
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange=GetCityResult;
xmlHttp.send(null);
}

function GetCityResult()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
clearSelectOption("ddlcity");
ReadXmlDoc(xmlHttp.responseXML,"ddlcity");
}
}
}
...全文
106 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hrz136 2008-12-16
  • 打赏
  • 举报
回复
谢谢!大家!
午夜咖啡男 2008-12-16
  • 打赏
  • 举报
回复
还是js函数引用和返回值的问题阿

如果你这样写xmlHttp.onreadystatechange=GetCityResult()
语义上来说是当xmlhttp的状态变化的时候执行“GetCityResult方法的返回值”,除非它的返回值是个Function对象,不然当然不行啦,传统的写法中:
xmlHttp.onreadystatechange = GetCityResult是让他的函数指针指向GetCityResult方法。但是是在xmlhttprequest内部中运行的。

如果要带参数,简单的方法就是写成匿名函数:
var args = ....//你的参数
xmlhttp.onreadystatechange = function(){
alert(args); //可以访问到当前闭包中的变量args
}

这样的原因就是因为onreadystatechange是xmlhttp对象的成员方法,是在xmlhttp内部被调用的,调用的时候是不带参的。
zhangshuling 2008-12-16
  • 打赏
  • 举报
回复
呵呵,有人比我快
因为我刚刚在做这个的例子
zhangshuling 2008-12-16
  • 打赏
  • 举报
回复
xmlHttp.onreadystatechange=GetCityResult(ControlID);
可以改成
xmlHttp.onreadystatechange= function(){
GetCityResult(ControlID);
}

试试
Freely2006 2008-12-16
  • 打赏
  • 举报
回复
xmlHttp.onreadystatechange=GetCityResult;
可以改成
xmlHttp.onreadystatechange=function(){GetCityResult(ControlID)};

52,782

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧