Response.Redirect ПОСЛЕ вызова JS Alert или Confirm

Я работаю над веб-приложением VB.NET. Когда кто-то успешно меняет свой пароль, я хочу показать всплывающее сообщение, которое сообщает им, что он был успешно изменен. После того, как они нажмут OK, я хочу перенаправить их на главную страницу. Код выглядит так:

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

Почему происходит перенаправление, а всплывающее окно с предупреждением никогда не отображается?


person Bill    schedule 13.04.2011    source источник


Ответы (4)


Попробуй это:

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

}
person Chandu    schedule 13.04.2011

Вы звоните на сторону сервера перенаправления, ваш скрипт никогда не сможет запуститься. используйте window.location для перенаправления на клиентскую сторону, например:

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

Причина в том, что вся обработка на стороне сервера будет выполняться до обработки на стороне клиента.

Одним из решений может быть передача «MainPage.aspx» вашему клиентскому сценарию следующим образом:

ConfirmNewUser('MainPage.aspx');

Тогда ваш клиентский скрипт должен будет принимать параметр URL:

function ConfirmNewUser(url) { ... }

и следуйте за window.location:

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

и удалите следующее из кода вашего сервера:

Response.Redirect("MainPage.aspx")
person Brian David Berman    schedule 13.04.2011

Response.Redirect устанавливает HTTP-заголовок Location и ответ 302-Moved, браузер будет действовать в соответствии с этим, как только увидит его. Поскольку заголовки идут перед содержимым, ваш сценарий никогда не будет виден или проанализирован.

person Alex K.    schedule 13.04.2011