ghris 2008-09-19 12:41
浏览 197
已采纳

ajax返回值的问题

var xmlHttp; var stateString; function createXMLHttpRequest(){ if (window.ActiveXObject){ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }else if(window.XMLHttpRequest){ xmlHttp = new XMLHttpRequest(); } } function sendServer() { createXMLHttpRequest(); var url="/SSH/login.do"; xmlHttp.open("post",url,true); xmlHttp.onreadystatechange = callback; xmlHttp.send(null); } function callback(){ if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { stateString = xmlHttp.responseTEXT;//服务器返回值,假设返回值为1 alert(stateString );//弹出消息框值为1 } } } function click() { sendServer(); alert(stateString);//弹出消息框值为undefined,这为什么得不到值?不明白 }
  • 写回答

2条回答 默认 最新

  • iteye_17163 2008-09-19 15:08
    关注

    [code="js"]xmlHttp.open("post",url,true); [/code]
    最后一个参数为数据是否为异步发送.
    若为true,则是异步发送.执行完send()之后,不管数据有没有返回,都执行后面的语句.也就是说收发数据与执行其它javascript语句是同时进行的.而是否接收到数据,则是在readystatechange事件中进行处理.

    若为false,则是同步发送,执行完send()之后,就会停在send()语句中,直到接收到了响应之后,才会继续执行后面的语句.

    所以在第三个值为true,直接执行后面的语句时.send之后数据还未接收到,所以会为undefined.

    可以写如下代码测试:[code="js"]
    sendServer();
    setTimeout(function(){
    alert(stateString);
    },5000);//延迟五秒之后再alert(),这时就是有数据的;[/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料