Response.Redirect AFTER调用JS Alert或Confirm

时间:2011-04-13 15:36:06

标签: javascript vb.net alert

我正在开发一个VB.NET Web应用程序。当有人成功更改密码时,我想显示一条弹出消息,让他们知道它已成功更改。单击确定后,我想将它们重定向到主页面。代码如下所示:

ClientScript.RegisterStartupScript(Me.GetType(), "confirmScript", "ConfirmNewUser();", True)
Response.Redirect("MainPage.aspx")

为什么重定向发生且警告弹出窗口从不显示?

4 个答案:

答案 0 :(得分:3)

试试这个:

1)从后面的代码中删除Response.Redirect。

2)更改ConfirmNewUser功能,如下所示:

function ConfirmNewUser(){
    //Existing Code of ConfirmNewUser
    //New Code.
    var msg = "Password changed successfully. Press OK to go to Home page Cancel to stay on current page.";
    if(confirm(msg)){
        window.location.href = "MainPage.aspx";
    }

}

答案 1 :(得分:1)

您正在调用重定向服务器端,您的脚本永远不会有机会运行。使用window.location进行重定向客户端,如下所示:

function ConfirmNewUser() {
  if(confirm("Your password has been changed, click OK to continue")) {
    window.location = "MainPage.aspx"; //go to home page
  }
}

答案 2 :(得分:0)

原因是所有服务器端处理都将在客户端之前进行。

一种解决方案是将“MainPage.aspx”传递给您的客户端脚本,如下所示:

ConfirmNewUser('MainPage.aspx');

您的客户端脚本必须采用URL参数:

function ConfirmNewUser(url) { ... }

并跟进window.location:

...
if(confirm(...))
{
  window.location = url;
}

并从服务器代码中删除以下内容:

Response.Redirect("MainPage.aspx")

答案 3 :(得分:0)

Response.Redirect设置位置http标头和302-Moved响应,浏览器会在看到它时立即对此进行操作。由于标题出现在内容之前,因此永远不会看到或解析您的脚本。