AJAX代码回调函数callback()没有执行

emon123 2009-04-13 03:54:41
写的这个ajax实现联动的代码时,在sendRequest()函数中执行xmlHttpRequest.onreadystatechange=callback这句跳入callback()函数后,打印alert("call in")什么都没有,表示这个函数根本都没有被执行?不知道哪错了。请大家帮忙看看,在线等!~~

<script type="text/javascript">

//窗口打开时加载
window.onload = function(){
document.all.city.options[document.all.city.options.length]=new Option("武汉","1")
document.all.city.options[document.all.city.options.length]=new Option("荆州","2")
document.all.city.options[document.all.city.options.length]=new Option("襄樊","3")
document.getElementById("city").selectedIndex=0;
}


var xmlHttpRequest;
//--创建xmlHttpRequest对象
function createXmlHttpRequest(){
if(window.xmlHttpRequest){
xmlHttpRequest = new XmlHttpRequest();
} else if(window.ActiveXObject){
xmlHttpRequest = new ActiveXObject("Miscorosoft.XMLHTTP");
}
if(!xmlHttpRequest){
alert("创建对象失败");
}
alert("createXmlHttpRequest");
}

createXmlHttpRequest();

//回调函数
function callback(){
alert("call in"); //这句没有被打印。这个函数没有被执行?????
if(xmlHttpRequest.readyState==4){
if(xmlHttpRequest.status==200){
alert("callback");
window.alert(xmlHttpRequest.responseText);
}else{
alert("服务器"+xmlHttpRequest.status+"错误");
}
}
}

//当对象创建成功后,服务器的请求操作
function sendRequest(func, url, param){
alert("sendRequest");
xmlHttpRequest.onreadystatechange=callback;
alert("sendRequest12");
xmlHttpRequest.open("POST",url,true);
xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttpRequest.send(param);

}

function queryCity(id){
alert(id);
sendRequest(callback,"<%=path%>/querycity.do","id="+id); //这里执行出问题
alert("queryCity"); //这里没有执行
}

//调用服务器端返回的数据,进行显示
function display(){
document.getElementById ("city").innerHTML = xmlHttpRequest.responseText;
}
</script>
...全文
1038 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
emon123 2009-04-16
  • 打赏
  • 举报
回复
晕倒,我终于找到错误之处了,花了我一下午时间,
xmlHttpRequest = new ActiveXObject("Miscorosoft.XMLHTTP");
应该改成
xmlHttpRequest=new ActiveXObject("MSXML2.XMLHTTP.3.0");
jack420124 2009-04-15
  • 打赏
  • 举报
回复
function sendRequest(func, url, param){

xmlHttpRequest.open("POST",url,true);
xmlHttpRequest.onreadystatechange=func;
xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttpRequest.send(param);

}
mengsijun1987 2009-04-14
  • 打赏
  • 举报
回复
路过帮顶一下。
yeinuse 2009-04-14
  • 打赏
  • 举报
回复
顶了,楼上的。
wh110 2009-04-14
  • 打赏
  • 举报
回复
路过帮顶一下。
mumu_java 2009-04-14
  • 打赏
  • 举报
回复

...
//当对象创建成功后,服务器的请求操作
function sendRequest(func, url, param){

xmlHttpRequest.open("POST",url,true);
xmlHttpRequest.onreadystatechange=callback;
xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttpRequest.send(param);

}
...

lz注意一下你的代码顺序,onreadystatechange要在open方法之后才行。
顺便说一句,你的回掉函数名字最好起成myCallBackFun之类的名字。呵呵。

52,797

社区成员

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

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