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"
[其他解释]
不是这个意思。Response.Redirect是服务器跳转,没错。但是只有浏览器接收到跳转,才会让网页跳转。一个典型的例子是,你用httpwebrequest发送数据,浏览器会跳转么?
[其他解释]
有可能是虚拟路径引起 改成
Response.Redirect("~../../main.aspx", true);试试
[其他解释]
这里改成这样试试
Response.Write("1");
Response.Redirect("main.aspx",false);
[其他解释]
正解
用了ajax,就不能再用Response.Redirect跳转了。
[其他解释]
你用ajax 跳转 就不能使用response.Redirect来重新定向了。
------其他解决方案--------------------
是的,Response.Redirect是本地跳转,并不服务端跳转的,浏览器接到指令后,再请求要跳转的页面
[其他解释]
Response.Redirect是往浏览器端输出一个响应码,这个响应码为301或者302,告诉浏览器跳转