main.asp
--------------------------------
session("data")=request("data")1.asp
----------------------------------
dt=session("data")----------------------------------
不要以为这样写就可以了。其实你的main.asp中因为包含了1.asp他们会在服务器端同时处理。
当在父页面为session("data")赋值的时候,1.asp同时请求的session("data")却可能是任何值,所以你可以采用异步刷新来在1.asp中得到main.asp中赋给session("data")的值。

解决方案 »

  1.   

    在服务器端有两个ASP网页:
    setSession.asp:
    <%
    dim sname, svalue
    sname = request("sname")
    svalue= request("svalue")
    session(sname) = svalue
    %>getSession.asp
    <%
      response.write session(request("sname"))
    %>main.asp:
    <script>
    function getQuery(name)
    {
        var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
        var r = window.location.search.substr(1).match(reg);
        if (r!=null) return unescape(r[2]); return null;
    }
    window.onload = function()
    {
      var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
          xmlhttp.open("GET", "setSession.asp?sname=data&svalue="+ getQuery("data"), false);
          xmlhttp.send(null);
    }
    </script>1.asp:
    <script>
    window.onload = function()
    {
      var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
          xmlhttp.open("GET", "getSession.asp?sname=data", false);
          xmlhttp.send(null);
      var data = xmlhttp.responseText;
      alert("session('data') = "+ data);
    }
    </script>
      

  2.   

    不要以为这样写就可以了。其实你的main.asp中因为包含了1.asp他们会在服务器端同时处理。
    当在父页面为session("data")赋值的时候,1.asp同时请求的session("data")却可能是任何值,所以你可以采用异步刷新来在1.asp中得到main.asp中赋给session("data")的值。============================
    不明白你在说什么main.asp
    <iframe src="1.asp"></iframe>
    <%session("a")="abc"%>
    1.asp
    <%response.write session("a")%>服务器的处理次序:先后台再前台
    所以<%%>的内容,一定在<iframe>之前运行
    也就是说SESSION赋完值后,才执行IFRAME,调入1。ASP,何来同步错乱之说?
    所以直接赋值是可行的
    不信你自己试一下