问过Response.Write与Response.Redirect的问题

chencometrue 2010-04-28 03:38:26
Response.Write("<script>alert('Registration success')</script>");
Response.Redirect("Login.aspx");

我写了这样的代码,为什么上面的Response.Write执行了,但是不会显示出来??而马上就执行跳转了?
如果我想做到弹出提示框说“注册成功”然后马上自动跳转到另一个页面,那应该怎样实现?
...全文
118 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
azurechina 2010-04-28
  • 打赏
  • 举报
回复
前面没看别人给的答案。跟楼主说下1楼的是不标准的做法。不要用Response.Write来加JS脚本。这样写js位置不标准。

正确的做法要调用:
http://msdn.microsoft.com/en-us/library/system.web.ui.page.registerclientscriptblock.aspx
http://msdn.microsoft.com/en-us/library/system.web.ui.page.registerstartupscript.aspx
zccmy22 2010-04-28
  • 打赏
  • 举报
回复
大体上是这样的。

Response.Write
Response.Redirect
这两条命令对于服务器来讲是response对象的两个方法。同时这两个方法并没有返回值。
所以服务器不会等待,而是一条条的顺序执行下去。
Write中的提示框是客户端的js操作,他的提示中止仅限于js,客户端。

所以事实上这个提示已经出来了,如果你有代码跟踪一条条的跟踪的话会发现它已经执行并提示了对话框。

但是Response.Redirect执行时会强制跳转刷新,这样给你的错觉就是头一句没有执行。

所以解决方法就像一楼的回答一样,都用js好了。
azurechina 2010-04-28
  • 打赏
  • 举报
回复
你首先要理解Response.Redirect工作原理。他是马上发送301或者302状态码到客户端的。然后浏览器看到301或302直接跳转。
根据你的描述要用javascript在客户端做。
wwweasy 2010-04-28
  • 打赏
  • 举报
回复
两者都是response的执行语句,不能同时调用
night_2009 2010-04-28
  • 打赏
  • 举报
回复
Response.Write("<script>alert('Registration Success');window.location.href='Login.aspx'</script>")
Mr-Jee 2010-04-28
  • 打赏
  • 举报
回复
因为你的浏览器还没有解析这个JS。而服务器的命令已经跳转了

所以还是用1楼的办法吧。
  • 打赏
  • 举报
回复
Response.Redirect("Login.aspx");

删掉不要。
sprc_lcl 2010-04-28
  • 打赏
  • 举报
回复
Response.Write("<script>alert('Registration success');window.location.href='Login.aspx';</script>");
Response.End();
  • 打赏
  • 举报
回复
Response.Write("<script>alert('Registration success');location.href='Login.aspx';</script>");

62,046

社区成员

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

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

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

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