首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

Response.Redirect无法实现跳转的有关问题

2012-12-15 
Response.Redirect无法实现跳转的问题本帖最后由 wangzhen199009 于 2012-12-01 14:33:47 编辑使用ajax做

Response.Redirect无法实现跳转的问题
本帖最后由 wangzhen199009 于 2012-12-01 14:33:47 编辑 使用ajax做的一个登录功能,就是在Login.aspx登录。然后把登录数据以ajax 的形式发送到后台页面验证处理。如果验证成功,跳转到main.aspx。否则给你相关错误的提示。

详细代码:
js文件:


$('#Submit').click(function () {
        $.post("Login.aspx",
            {
                username: $('#cusername').val(),
                pwd: $('#cpwd').val(),
                verifycode: $('#txt_verify').val()
            },
            function (data, textStatue) {
                if (data == "1") {
                    $('#tip').html("成功登录");
                }
                else if (data == "2") {
                    $('#tip').html("密码错误");
                }
                else if (data == "3") {
                    $('#tip').html("验证码错误");
                }
            }

        );
        return false;

    })


Login.aspx.cs文件

 protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.Params["username"] != null)
            {
                emp.EmployeeId = Request.Params["username"];
                emp.EmployPwd = Request.Params["pwd"];

                string verifycode = Request.Params["verifycode"];

                if (buss.CheckUser(emp)&&CheckVerifyCode(verifycode))
                {
                    Response.Write("1");
                    Response.Redirect("main.aspx");
                    Response.End();


                }
                else if (!buss.CheckUser(emp))
                {
                    Response.Write("2");
                    Response.End();
                }
                else if (buss.CheckUser(emp) && !CheckVerifyCode(verifycode))
                {
                    Response.Write("3");
                    Response.End();
                }

                
            }
        }



在调试的过程中,我确定cs文件中Response.Redirect("main.aspx");执行了。但是页面没有跳转。
最后我通过把跳转语句写在js文件中(location.href = "main.aspx)问题解决了。但是本人还是很疑惑,为什么Response.Redirect("main.aspx")没有实现立刻跳转。希望大家给点指导,谢谢
[最优解释]
因为你是用ajax去读取的,只有浏览器接受跳转指令才会跳转。
[其他解释]
浏览器客户端 只有 接收到 301 302 的返回 信息头才能根据你设置的Location  跳转 也就是说

Response.Redirect("~../../main.aspx", true)
返回的头是 301 地址 是~../../main.aspx 
但问题是 你用ajax 调用 就有问题 了 你可以调用ajax 返回是否登录成功然后再处理
[其他解释]
你ajax请求logon  当然是logon这个页面跳转了  不代表你的请求页跳转  前台判断是否=="1"
然后  window.location.href="main.aspx"
[其他解释]
引用:
引用:因为你是用ajax去读取的,只有浏览器接受跳转指令才会跳转。
是的,Response.Redirect是本地跳转,并不服务端跳转的,浏览器接到指令后,再请求要跳转的页面


不是这个意思。Response.Redirect是服务器跳转,没错。但是只有浏览器接收到跳转,才会让网页跳转。一个典型的例子是,你用httpwebrequest发送数据,浏览器会跳转么?
[其他解释]
有可能是虚拟路径引起 改成
Response.Redirect("~../../main.aspx", true);试试

[其他解释]
这里改成这样试试
    Response.Write("1");          
   Response.Redirect("main.aspx",false); 
                  
[其他解释]
引用:
因为你是用ajax去读取的,只有浏览器接受跳转指令才会跳转。


正解
用了ajax,就不能再用Response.Redirect跳转了。
[其他解释]
你用ajax 跳转 就不能使用response.Redirect来重新定向了。
------其他解决方案--------------------


引用:
因为你是用ajax去读取的,只有浏览器接受跳转指令才会跳转。

是的,Response.Redirect是本地跳转,并不服务端跳转的,浏览器接到指令后,再请求要跳转的页面
[其他解释]
Response.Redirect是往浏览器端输出一个响应码,这个响应码为301或者302,告诉浏览器跳转

热点排行