Javascript 响应。调用JS警报或确认后重定向

Javascript 响应。调用JS警报或确认后重定向,javascript,vb.net,alert,Javascript,Vb.net,Alert,我正在开发一个VB.NET web应用程序。当某人成功更改密码时,我想显示一条弹出消息,让他们知道密码已成功更改。在他们点击OK后,我想将他们重定向到主页面。代码如下所示: ClientScript.RegisterStartupScript(Me.GetType(), "confirmScript", "ConfirmNewUser();", True) Response.Redirect("MainPage.aspx") function ConfirmNewUser() { if(c

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

ClientScript.RegisterStartupScript(Me.GetType(), "confirmScript", "ConfirmNewUser();", True)
Response.Redirect("MainPage.aspx")
function ConfirmNewUser() {
  if(confirm("Your password has been changed, click OK to continue")) {
    window.location = "MainPage.aspx"; //go to home page
  }
}

为什么会发生重定向并且警报弹出窗口从未显示?

如果您正在调用重定向服务器端,您的脚本将永远无法运行。使用
window.location
重定向客户端,如下所示:

ClientScript.RegisterStartupScript(Me.GetType(), "confirmScript", "ConfirmNewUser();", True)
Response.Redirect("MainPage.aspx")
function ConfirmNewUser() {
  if(confirm("Your password has been changed, click OK to continue")) {
    window.location = "MainPage.aspx"; //go to home page
  }
}

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

ClientScript.RegisterStartupScript(Me.GetType(), "confirmScript", "ConfirmNewUser();", True)
Response.Redirect("MainPage.aspx")
function ConfirmNewUser() {
  if(confirm("Your password has been changed, click OK to continue")) {
    window.location = "MainPage.aspx"; //go to home page
  }
}

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

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

ConfirmNewUser('MainPage.aspx');
然后,您的客户端脚本必须采用URL参数:

function ConfirmNewUser(url) { ... }
并使用窗口进行后续操作。位置:

...
if(confirm(...))
{
  window.location = url;
}
并从服务器代码中删除以下内容:

Response.Redirect("MainPage.aspx")

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

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

ConfirmNewUser('MainPage.aspx');
然后,您的客户端脚本必须采用URL参数:

function ConfirmNewUser(url) { ... }
并使用窗口进行后续操作。位置:

...
if(confirm(...))
{
  window.location = url;
}
并从服务器代码中删除以下内容:

Response.Redirect("MainPage.aspx")
试试这个:

1) 删除响应。从代码隐藏中重定向

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) 删除响应。从代码隐藏中重定向

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";
    }

}

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

响应。重定向设置http标题和302移动响应的位置,浏览器将在看到它后立即对此进行操作。由于标题出现在内容之前,因此您的脚本永远不会被看到或解析