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

wangzhen199009 2012-12-01 02:33:17
使用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")没有实现立刻跳转。希望大家给点指导,谢谢
...全文
3415 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
自由小菜园 2012-12-02
  • 打赏
  • 举报
回复
Response.Redirect是往浏览器端输出一个响应码,这个响应码为301或者302,告诉浏览器跳转
devmiao 2012-12-02
  • 打赏
  • 举报
回复
引用 8 楼 CSMSDN 的回复:
引用 1 楼 devmiao 的回复:因为你是用ajax去读取的,只有浏览器接受跳转指令才会跳转。 是的,Response.Redirect是本地跳转,并不服务端跳转的,浏览器接到指令后,再请求要跳转的页面
不是这个意思。Response.Redirect是服务器跳转,没错。但是只有浏览器接收到跳转,才会让网页跳转。一个典型的例子是,你用httpwebrequest发送数据,浏览器会跳转么?
CSMSDN 2012-12-02
  • 打赏
  • 举报
回复
引用 1 楼 devmiao 的回复:
因为你是用ajax去读取的,只有浏览器接受跳转指令才会跳转。
是的,Response.Redirect是本地跳转,并不服务端跳转的,浏览器接到指令后,再请求要跳转的页面
rayyu1989 2012-12-01
  • 打赏
  • 举报
回复
你ajax请求logon 当然是logon这个页面跳转了 不代表你的请求页跳转 前台判断是否=="1" 然后 window.location.href="main.aspx"
baishaoge 2012-12-01
  • 打赏
  • 举报
回复
你用ajax 跳转 就不能使用response.Redirect来重新定向了。
qishichang 2012-12-01
  • 打赏
  • 举报
回复
引用 1 楼 devmiao 的回复:
因为你是用ajax去读取的,只有浏览器接受跳转指令才会跳转。
正解 用了ajax,就不能再用Response.Redirect跳转了。
  • 打赏
  • 举报
回复
这里改成这样试试 Response.Write("1"); Response.Redirect("main.aspx",false);
IIoveShanks 2012-12-01
  • 打赏
  • 举报
回复
浏览器客户端 只有 接收到 301 302 的返回 信息头才能根据你设置的Location 跳转 也就是说 Response.Redirect("~../../main.aspx", true) 返回的头是 301 地址 是~../../main.aspx 但问题是 你用ajax 调用 就有问题 了 你可以调用ajax 返回是否登录成功然后再处理
蝶恋花雨 2012-12-01
  • 打赏
  • 举报
回复
有可能是虚拟路径引起 改成 Response.Redirect("~../../main.aspx", true);试试
devmiao 2012-12-01
  • 打赏
  • 举报
回复
因为你是用ajax去读取的,只有浏览器接受跳转指令才会跳转。

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧