<!-- XMLHttpRequest对象的创建  -->
<script type="text/javascript">
var demosrc;
function CreateXMLHttp(){
var xmlHttp;
try{ 
//Firefox, Opera 8.0+, Safari
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
//Internet Explorer
try{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try{
xmlHttp = new AcitveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("您的浏览器不支持AJAX!");
return false;
}
}
}
return xmlHttp;

}

function ajax(){
xmlHttp = CreateXMLHttp();
  var url="anti.asp";
  url=url+"?j="+<%=r%>;
  url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);

xmlHttp.send(null);
}
function stateChanged(){
if (xmlHttp.readyState==4)
   { 
demosrc = xmlHttp.responseText;
   //document.write("ASP执行出来的结果是:"+ demosrc + "!");

   }
}
ajax();
document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");     //输出结果为undefined
document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");    //输出结果为undefined
document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
</script></head>
<body onLoad="menuFix();MM_preloadImages('Images/bank1-2.gif','Images/bank2-2.gif','Images/bank3-2.gif','Images/bank4-2.gif','Images/bank5-2.gif','Images/bank6-2.gif')"><!--#include file="head.asp"-->
<!--图片框--><div class="indexmainbox">
<div id="indeximg">
<img src="Images/img/cp.jpg" width="976" height="164"> </div>
</div>
<a name="d"></a>
<script language="javascript">
document.write("ASP执行出来的结果是:"+ demosrc + "!");//输出结果为undefined
</script>
<!--过渡层--><div class="secondpart"></div>
<div id="indexcontent">
<div id="content">
<!-- 关于我们的侧边栏 -->
<!-- 中间内容 -->
</div>
</div><table width="976" height="56" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#D6DDE3">
  <tr>
    <td width="296" valign="top"><table width="90%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td colspan="3"><img src="Images/r7_c3.jpg" width="289" height="10"></td>
      </tr>
      <tr>
        <td width="2%" rowspan="2"><img src="Images/r8_c3.jpg" width="6" height="671"></td>
        <td width="95%" valign="top" bgcolor="#d6dde3"><table width="100%" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td><table width="100%"  border="0" cellspacing="0" cellpadding="0">
              <tr valign="middle">
                <td width="1%" height="12">&nbsp;</td>
                <td width="33%" height="12">&nbsp;</td>
                <td width="1%" height="12">&nbsp;</td>
                <td width="61%" height="12">&nbsp;</td>
                <td width="1%">&nbsp;</td>
              </tr>
              
<script language="javascript">
document.write("B______ASP执行出来的结果是:"+ demosrc + "!");//输出结果正常:demo.htm
</script>

解决方案 »

  1.   

    不是不一样,function ajax()是异步执行的,在你第一个输出地方anti.asp还没有返回结果xmlHttp.responseText,所以是undefined。
    在文档结尾处,也就是文档加载结束后,anti.asp执行完了,这时候就有xmlHttp.responseText了,所以demosrc就有值了。
      

  2.   

    xmlHttp.readyState==4
    不是已经代表了执行完了吗?
      

  3.   


    window.onload=function(){
        ajax();
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");     //输出结果为undefined
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");    //输出结果为undefined
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
    >
    }
      

  4.   

    谢谢 toury , 我试试先! 
      

  5.   

    function ajax(){
        xmlHttp = CreateXMLHttp();
        var url="anti.asp";
            url=url+"?j="+<%=r%>;
            url=url+"&sid="+Math.random();// 告诉服务器提交给anti.asp处理
        xmlHttp.onreadystatechange=stateChanged; // anti.asp处理结束后的响应函数
        xmlHttp.open("GET",url,true); // 提交服务器处理
        xmlHttp.send(null);
    }
    // ajax()只是执行提交anti.asp处理,并告诉程序anti.asp处理完成后由stateChanged响应处理结果。
    // 程序执行到ajax时候,会继续处理本页的其余代码,不会等待anti.asp结束。
    所以xmlHttp.readyState==4是在anti.asp处理完之后才真正执行的。程序执行顺序如下:
    CreateXMLHttp()
       |
      ajax()
       |
    提交anti.asp执行,并告诉程序anti.asp处理完后由stateChanged响应   -> stateChanged等待
       |                                                                   |
    第一个document.write("ASP执行出来的结果是:"+ demosrc + "!");              | 
       |                                                                   |
    ......                                                                 |
       |                                                            anti.asp处理完成
        |                                                                  |
    最后的document.write("ASP执行出来的结果是:"+ demosrc + "!");  stateChanged获得demosrc值
      

  6.   

    不行!
    我改成这样后, 所有的都是 undefined 了. 
      

  7.   

    你的xmlhttp没传递到回调函数。改一下
    <script type="text/javascript">
    var demosrc;
    function CreateXMLHttp(){
      var xmlHttp;
      try{ xmlHttp = new XMLHttpRequest();}
      catch(e){
        try{ xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");}
        catch (e){
           try{xmlHttp = new AcitveXObject("Microsoft.XMLHTTP");}
           catch (e){alert("您的浏览器不支持AJAX!"); return false;}
        }
      }
      return xmlHttp;
    }
        
    function ajax(){
      var x= CreateXMLHttp();
      var url="anti.asp";
      url=url+"?j="+<%=r%>;
      url=url+"&sid="+Math.random();
      x.onreadystatechange=stateChanged(x);
      x.open("GET",url,true);
      x.send(null);
    }function stateChanged(x){
      if (x.readyState==4){
        if(x.status==200||x.status==0){
          demosrc = xmlHttp.responseText;
        }
        //document.write("ASP执行出来的结果是:"+ demosrc + "!");
      }
    }
    window.onload=function(){
      ajax();
      document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");     //输出结果为undefined
      document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");    //输出结果为undefined
      document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
      document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
      document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
      document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
      document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
      document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
      document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
      document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
      document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
    }
    </script>
      

  8.   


    x.onreadystatechange=stateChanged(x);---------->改为
    x.onreadystatechange=stateChanged(x);
      

  9.   

    我只要加了window.onload=function()就会全部是 undefined我把代码全拿出来大家看看1.zxys.asp<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%><%
    dim r
    r = Request.QueryString("d")
    %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
    <title>在线演示</title>
    <META http-equiv=Content-Type content="text/html; charset=gb2312">
    <meta name="description" content="" />
    <meta name="keywords" content="" />
    <link rel="stylesheet" type="text/css" href="css/neitway.css" />
    <script type="text/javascript" src="js/indexserch.js"></script>
    <script type="text/javascript" src="js/menu.js"></script>
    <style type="text/css">
    <!--
    form {display: inline;border: none;}
    .style1 {font-size: 12px}
    a { color: #538fd8;text-decoration: underline;cursor: hand;}
    input { background-color: #d6dde3;border: none;}
    .style2 {font-size: 14px}
    -->
    </style><!-- XMLHttpRequest对象的创建  -->
    <script type="text/javascript">



    var demosrc;
    function CreateXMLHttp(){
    var xmlHttp;
    try{ 
    //Firefox, Opera 8.0+, Safari
    xmlHttp = new XMLHttpRequest();
    }
    catch (e)
    {
    //Internet Explorer
    try{
    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
    try{
    xmlHttp = new AcitveXObject("Microsoft.XMLHTTP");
    }
    catch (e)
    {
    alert("您的浏览器不支持AJAX!");
    return false;
    }
    }
    }
    return xmlHttp;

    }

    function ajax(){
    var x= CreateXMLHttp();
       var url="anti.asp";
       url=url+"?j="+<%=r%>;
       url=url+"&sid="+Math.random();
       x.onreadystatechange=stateChanged(x);
       x.open("GET",url,true);
       x.send(null);
    }
    function stateChanged(x){
    if (x.readyState==4)
       { 
    if (x.status==200)
    {
    demosrc = xmlHttp.responseText;
       document.write("ASP执行出来的结果是:"+ demosrc + "!");
    }
       }
    }

    window.onload = function(){ ajax();
    document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
    document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
    document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
    document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
    document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
    document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
    document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
    document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
    document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
    document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
    document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
    }
    </script></head>
    <body onLoad="menuFix();MM_preloadImages('Images/bank1-2.gif','Images/bank2-2.gif','Images/bank3-2.gif','Images/bank4-2.gif','Images/bank5-2.gif','Images/bank6-2.gif')"><!--#include file="head.asp"-->
    <!--图片框--><div class="indexmainbox">
    <div id="indeximg">
    <img src="Images/img/cp.jpg" width="976" height="164"> </div>
    </div>
    <a name="d"></a>
    <script language="javascript">
    document.write("ASP执行出来的结果是:"+ demosrc + "!");
    </script>
    <!--过渡层--><div class="secondpart"></div>
    <div id="indexcontent">
    <div id="content">
    <!-- 关于我们的侧边栏 -->
    <!-- 中间内容 -->
    </div>
    </div><table width="976" height="56" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#D6DDE3">
      <tr>
        <td width="296" valign="top"><table width="90%" border="0" cellpadding="0" cellspacing="0">
          <tr>
            <td colspan="3"><img src="Images/r7_c3.jpg" width="289" height="10"></td>
          </tr>
          <tr>
            <td width="2%" rowspan="2"><img src="Images/r8_c3.jpg" width="6" height="671"></td>
            <td width="95%" valign="top" bgcolor="#d6dde3"><table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td><table width="100%"  border="0" cellspacing="0" cellpadding="0">
                  <tr valign="middle">
                    <td width="1%" height="12">&nbsp;</td>
                    <td width="33%" height="12">&nbsp;</td>
                    <td width="1%" height="12">&nbsp;</td>
                    <td width="61%" height="12">&nbsp;</td>
                    <td width="1%">&nbsp;</td>
                  </tr>
                  
    <script language="javascript">
    document.write("B______ASP执行出来的结果是:"+ demosrc + "!");
    </script>
                  
                  <% dim j : j = 1   %>
                  
    <%
    dim rj 
    rj = Cint(request.QueryString("j"))
    dim demotext'--help: guiyang()-贵阳,tianjing()-天津,chongqing()-重庆巴山,office()-办公室,dongguan()-东莞, techpark()-科技园
    '--mayuanroad() 贵阳麻园大道, hexi() 河西放眼视界,wuhan(),武汉 ,changzhou() 沧洲,changchunjd()长春
    '--jxjs() 江西嘉盛
    '-------------------------------------------------------------------------------
    call dongguan()
    call office()call mayuanroad()
    call changzhou()
    call gxps()
    call wuhan()
    call changchunjd()'--------  repeat   ------------------------------------------------------------
    '-------------------------------------------------------------------------------
    %><script language="javascript">
    document.write("A______ASP执行出来的结果是:"+ demosrc + "!");
    </script>
                  
                  
                  
                 <%  sub dongguan() %>
                  <tr valign="middle">
                    <td>&nbsp;</td>
                    <td><a href="?j=<%=j%>&d=3#d" onclick="document.showtitle.title.value='演示平台<%=j%>福民大厦停车场';document.videoshow.all.iframe_show.src=demosrc"><img src="images/pic1.jpg" width="88" height="78"></a></td>
                    <td>&nbsp;</td>
                    <td><span class="style1"><strong>演示平台<%=j%>&nbsp;</strong><a href="?j=<%=j%>&d=3#d" onclick="document.showtitle.title.value='演示平台<%=j%>福民大厦停车场';document.videoshow.all.iframe_show.src=demosrc">东莞市福民大厦</a><br>
                      通过网络高速球实时监控东莞市福民大厦停车场状况(中国电信宽带)</span></td>
                    <td>&nbsp;</td>
                  </tr>
                  <tr valign="middle" height="30">
                    <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>                 
                  </tr>
                   <%
       if j = rj then
    demotext = "演示平台" & j & "福民大厦停车场"
       end if
        j=j+1:end sub %>             
                  
                   </table></td>
              </tr>
            </table></td>
            <td width="3%" rowspan="2" align="right" valign="top"><img src="Images/r8_c9.jpg" width="8" height="671"></td>
          </tr>
          <tr>
            <td valign="bottom" bgcolor="#d6dde3"><img src="Images/r23_c4.jpg" width="275" height="12"></td>
          </tr>
        </table></td>
        <td width="680" valign="top" bgcolor="#D6DDE3">
    <table width="680" height="685" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td><table>
            <tr align="left" valign="middle">
              <td width="299"><form name="showtitle">
                  <table width="550">
                    <tr align="left" valign="middle">
                      <td width="88"><strong><span class="style2">在线演示</span> >></strong></td>
                      <td>
                        <input name="title" type="text" id="title" style="background:#D6DDE3; border-width:0" value="<%if request.QueryString("j")="" then%>演示平台<%else%><%=demotext%><%end if%>" size="70" ></td>
                    </tr>
                  </table>
              </form></td>
    <td width="299"><td>
            </tr>
        </table></td>
      </tr>  <tr>
        <td valign="bottom">
        <form id="videoshow" name="videoshow">
        <%if request.QueryString("j")="" then%>
            <iframe id="iframe_show" name="show" align="middle" width="667" height="445" src="demmo0.htm" scrolling="No" frameborder="0"></iframe>
        <%else%>
        <script type="text/javascript">
    document.write("<iframe id='iframe_show' name='show' align='middle' width='667' height='445' src='"+ demosrc + "' scrolling='No' frameborder='0'></iframe>");

    </script>
        <%end if%>    
        </form> </td>
      </tr>
      
      <tr>
        <td valign="bottom">
    <table border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td><img src="images/r22_c12_3.jpg" width="669" height="196" border="0"></td>
          </tr>
        </table> </td>
      </tr>
    </table>
    <script language="javascript">
    document.write("ASP执行出来的结果是:"+ demosrc + "!");
    </script>
    </td>
      </tr>
    </table><!--#include file=bottom.asp-->
      

  10.   

    2.anti.asp
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%><%
    '判断是来路是否允许,防盗链核心
    dim rhost
    rhost = request.ServerVariables("HTTP_REFERER")
    ahost = request.ServerVariables("HTTP_HOST")

    if left(replace(rhost,"http://",""),len(ahost)) <> ahost then
    response.Write("<font color=red>请不要直接访问此文件!</font>")
    response.End() 
    end if

    %>
    <%
    dim j 
    j = request.QueryString("j")
    if isNumeric(j)=false then
    response.Write("demo0.htm")
    elseif j=1 then
    response.Write("demmo1_Arcw1t.htm")
    elseif j=2 then
    response.Write("demmo2_457Qlb.htm")
    elseif j=3 then
    response.Write("demmo3_uL4gYe.htm")
    elseif j=4 then
    response.Write("demmo4_Pzeq5n.htm")
    elseif j=5 then
    response.Write("demmo5_koywab.htm")
    elseif j=6 then
    response.Write("demmo6_Jlo6Ce.htm")
    elseif j=7 then
    response.Write("demmo7_DFTWaj.htm")
    elseif j=8 then
    response.Write("demmo8_zzbMiq.htm")
    elseif j=9 then
    response.Write("demmo9_955Hwv.htm")
    elseif j=10 then
    response.Write("demmo10_VB3jxl.htm")
    elseif j=11 then
    response.Write("demmo11_woi2jF.htm")
    elseif j=12 then
    response.Write("demmo12_wFsw1O.htm")
    elseif j=13 then
    response.Write("demmo13_owke1l.htm")
    elseif j=14 then
    response.Write("demmo14_9Cbewl.htm")
    elseif j=15 then
    response.Write("demmo15_brU2gi.htm")

    else 
    response.Write("demo0.htm")
    end if
    %>
      

  11.   

        function ajax(){
            var x= CreateXMLHttp();
              var url="anti.asp"+"?j="+<%=r%>;
              //url=url+"&sid="+Math.random();
              url +="&sid="+new Date().getTime();
    alert(url);//看看地址字串对吗?
              x.onreadystatechange=stateChanged(x);
              x.open("GET",url,true);
              x.send(null);
        }
        function stateChanged(x){
    alert(x);//看看xmlhttp传进来了吗?
    alert(x.readyState);//跟踪一下
            if (x.readyState==4)
                  { 
                if (x.status==200||x.status==0)
                {
                demosrc = xmlHttp.responseText;
                  document.write("ASP执行出来的结果是:"+ demosrc + "!");
                }
                  }
        }
      

  12.   

    本质来说是这样的,在你当前页面的流没有处理完时,后面的Ajax流不会得到,也就是responseText还没有拿到返回值。改一下onload;    
     window.onload = function(){
    ajax(); //
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
    var a = setTimeOut("alert()",3000);
    clearTimeOut(a);
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");
        }
      

  13.   

    1楼的分析是对的。
    怎么大家都跟window.onload干上了呢,这跟这个问题不相关的。onload事件的定义是所有元素都加载完的时候触发,包括链接的脚本(但并不包括脚本中执行的结果),图片等等。并不包括ajax执行结果。所以加不加都一样。但是你们把ajax()放到onload里面又是什么意思?一种做法是把AJAX改成同步模式,这样改动最少。
    xmlHttp.open("GET",url,false);
    但是强烈建议不要这么做,用户体验极差,特别是网络慢的用户。
    如果要用异步,首先要明白页面加载顺序。不相关的我就不提了,这里涉及到的是inline代码的执行时机。即直接放到<script>标签里面,并且不在函数里,或者在函数里又直接被执行了的那些代码,LZ的例子里这样的情况包括
        ajax();
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
        document.write("ASP执行出来的结果是:"+ demosrc + "!<br>");//输出结果为undefined
    这样的代码在加载的时候就会被执行。
    而AJAX运行于异步模式的时候,返回结果是需要一段时间的,具体时间不确定,依赖于网络状况。所以在调用ajax()之后进行的那些inline代码理论上讲可能执行正确,也可能不正确。
    而唯一可以确定结果已经返回的地方就是这里
        function stateChanged() {
            if (xmlHttp.readyState==4) { 
                demosrc = xmlHttp.responseText;
                //document.write("ASP执行出来的结果是:"+ demosrc + "!");
                // 这个地方
            }
        }
    所以如果要用异步模式,所有对AJAX结果的处理代码都必须直接或者间接地放到上面注释的那个地方。也就是说
    <script language="javascript">
        document.write("B______ASP执行出来的结果是:"+ demosrc + "!");//输出结果正常:demo.htm
    </script>
    这样的东西不再可以使用了,因为它们都有可能在AJAX返回之前执行而导致结果不正确。你必须写很多多余的代码来达到原来直接放页面里就可以实现的功能。
    比如在上面这个script的地方放上
    <div id="result"></div>
    再在上面注释的地方放上
    document.getElementById("result").innerHTML = demosrc;
      

  14.   

    16楼正解,对于异步的代码就是要有很多注意的地方,如果想要在得到需要的值后进行处理,必须在异步处理函数体里面判断异步结束后写代码,否则是会遇到取不到值得情况。因为调用异步函数后,直接执行下面的代码,而不是等异步函数结束后才执行。顺便说句,对于取多个url的内容,而且必须都取完后才开始处理的情况,要慎之又慎,我经常出这样的错误。
      

  15.   

    你仔细看了他的代码了?
    注意到没有,他的ajax()里有 url=url+"?j="+<%=r%>;如果不在onload()里做,怎么可能把<%=r%>传到后台呢?
      

  16.   

    不明白你在说什么。你不觉得服务器端的东西应该是先于客户端执行的吗?
    要说问题这里确实有问题,<%=r%>没加引号,所以应该是个数字,看着像防止缓存用的随机数。如果是这样的话,没有必要在服务器端生成,客户端做就好了,把<%=r%>换成Math.random()