首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 请教一个在asp.net关于xmlHttp的问题!谢谢! [已结贴,结贴人:wudidzwj]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wudidzwj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-19 11:30:17 楼主
    是这样的:
    我有两个页面,一个页面叫做ceshi.aspx,在这个页面的 <body onload="startRequest();">
    然后是Javascript中:
    var xmlHttp;

    function createXMLHttpRequest(){
        if(window.ActiveXObject){
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }else{
            xmlHttp=new XMLHttpRequest();
        }
    }

    function startRequest(){
        createXMLHttpRequest();
        xmlHttp.open("GET","isWebUser.aspx?url=oyangshuai",true);//我在这里请求了一个叫做isWebUser.aspx的页面
        xmlHttp.onreadystatechange=handleStateChange;
        xmlHttp.send(null);
    }

    function handleStateChange(){
        if(xmlHttp.readyState==4){
            if(xmlHttp.status==200||xmlHttp.status==0){
                alert(xmlHttp.responseText+"  "+xmlHttp.status);
               
            }
        }
    }

    然后是在isWebUser.aspx中我做了这样的操作:
    protected void Page_Load(object sender, EventArgs e) //注意!我在这里加了断点!
    {
        string userid = "";//用户会员号
        string userweb = Request.QueryString["url"];//链接请求的目标网站

        if (Session["user"] == null)//判断会话状态
        {
            Response.Write("not login" + userweb + userid);
        }
        else if (userweb == null)//这个判断没什么用,请忽略
        {
            Response.Write("error");
        }
        else
        {
            userid = Session["user"].ToString();
            DBcon t = new DBcon();
            if (!t.isHaveWeb(userweb)) //这里就是一个执行成功的操作
            {
                t.updateIntegral(userid, "1");

                Response.Write("ok");
            }
            else
            {
                Response.Write(userweb);
            }
        }
        Response.End();
    }


    具体问题是这样:我点击ceshi.aspx时,在ceshi.aspx的页面呈现出的时候异步请求了isWebUser.aspx页面,应该去执行isWebUser.aspx页面的内容,
    况且我在isWebUser.aspx中增加了断点,按理说每次点击ceshi.aspx时都应该在isWebUser.aspx页面中触发断点,但是我的只能是第一次点击ceshi.aspx时它才出发断点,再次点击时,无论怎么样它都不触发断点!但是还是能显示出xmlHttp.responseText,真不知道是怎么回事了,我也不知道我说的清除不清楚,希望各位高手帮忙看一看!小弟感激不尽!!
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chinahnzl
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 11:41:591楼 得分:15
    不是只在 <body onload="startRequest();"> 中有要求去访问isWebUser.aspx这个页面吗?

    onload已经完成,当然不会进去啦。。

    个人看法。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • whycom
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 11:57:042楼 得分:15
    考虑缓存,和页面事件处理方式
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • anheizhizi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 12:11:013楼 得分:15
    "按理说每次点击ceshi.aspx时都应该在isWebUser.aspx页面中触发断点"

    异步请求不是写在 <body onload="startRequest();">  中的么?  页面加载的时候才执行啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wudidzwj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 12:28:514楼 得分:0
    谢谢大家帮助了我!虽然我解决了,解决方法是在超链接上加了个target="_blank"

    我觉得是这样,每次开一个新的浏览器都会实例化一个新的xmlHttp对象去请求,也就是请求一个固定的isWebUser.aspx

    可是更深层次的原因我也不明白,这是我自己胡乱尝试解决的,希望高手能够告诉我究竟是为什么!

    再次表示我深深的感谢!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lovehongyun
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 12:31:395楼 得分:15
    你确认再次点击时触发startRequest()?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lovehongyun
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 12:37:036楼 得分:15
    如果是缓存问题就加上个.
    &rid=Math.random()
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • caicai_45
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 12:37:537楼 得分:15
    <body onload="startRequest();">

    帅哥,你都是页面第一次加载的时候才调用的,你的点击多半没写onclick
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gongsun
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 14:13:168楼 得分:10
    引用 7 楼 caicai_45 的回复:
    <body onload="startRequest();">

    帅哥,你都是页面第一次加载的时候才调用的,你的点击多半没写onclick


    呵呵。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved