2011-04-13 4 views
0

VB.NET 웹 응용 프로그램에서 작업 중입니다. 누군가가 성공적으로 암호를 변경하면 성공적으로 변경되었음을 알리는 팝업 메시지를 표시하려고합니다. 확인을 클릭하면 기본 페이지로 리디렉션하고 싶습니다. 코드는 다음과 같습니다.Response.Redirect JS Alert 또는 확인 후 AFTER

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

왜 리디렉션이 발생하고 경고 팝업이 표시되지 않습니까?

답변

1

리디렉션 서버 쪽을 호출하면 스크립트가 실행되지 않습니다. 이런 식으로 뭔가를 리디렉션 클라이언트 측을 할 window.location를 사용하는 모든 서버 측 처리는 클라이언트 측에 앞서 일어날 것이기 때문에

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

이유입니다.

function ConfirmNewUser(url) { ... } 

하고 따르

ConfirmNewUser('MainPage.aspx'); 

클라이언트 스크립트는 다음 URL 매개 변수를 사용해야합니다 다음과 같이

하나 개의 솔루션은 클라이언트 스크립트에 "MainPage.aspx"을 통과하는 것 위치 :

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

그리고 서버 코드에서 다음을 제거하십시오.

Response.Redirect("MainPage.aspx") 
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"; 
    } 

} 
0

Response.Redirect는 브라우저가 즉시 그것을보고로이 따라 행동 할 위치 HTTP 헤더와 302-이동 된 응답을 설정합니다. 내용 앞에 헤더가 오므로 스크립트가 표시되거나 파싱되지 않습니다.