2009-08-03 3 views
1
내 응답이 내 컨트롤러에서 오류 메시지 인 경우 경고 메시지가 아닌 일반 브라우저 페이지에 표시하고 싶습니다. 어떻게해야합니까? 고마워.

답변

4

당신은 응답에 따라 오류 페이지로 리디렉션 수있는, 뭔가 같은 :

$.post("myAction",$("#myForm").serialize(), 
     function(response) { 
      alert(response); 
      if(response == 'Error') { 
       window.location.href = '/MyErrorPage.html'; 
      } 

}); 

아니면 응답과 함께 현재 페이지의 내용을 대체 할 수있는, 예를 들면 :

$('body').html(response); 
0

당신 ajaxError-event handler에 콜백을 첨부하려고 시도 할 수 있습니다.

$.ajaxError(
    function (event, XMLHttpRequest, ajaxOptions, thrownError) { 
    window.location = '/error.html' 
}); 
+0

N.B 같은 것을 볼 수 있었다. ajax 오류는 실패 응답 코드가 없으면 시작되지 않습니다. – redsquare

4

서버가 404 오류 또는 이와 유사한 것을 반환하는 경우와 같이 더 나은 방법으로 오류 메시지를 처리 ​​할 수 ​​있으므로 $ .ajax 메서드를 사용하십시오. 당신은 모든 아약스 양식을 필요로 처리됩니다 JQuery와 양식 플러그인을 사용할 수 있습니다, 위의 조언에서 제외

$.ajax({ 
    type: "POST", 
    url: "page.php", 
    dataType: "text", 
    success: function(xhr) { 
     if(xhr == 'error') { 
      window.location.href = '/MyErrorPage.html'; 
     } 
    }, 
    error: function(XMLHttpRequest, textStatus, errorThrown) { 
     window.location.href = '/MyErrorPage.html'; 
    } 
}); 
+0

post() 대신 ajax()를 사용하는 것이 더 좋지만, 기술적으로 그의 ajax 요청에는 오류가 없으며 ajax 관점에서 유효합니다. 오류로 해석 될 수있는 응답 일뿐입니다. –

1

가 단순한 '오류'보다 더 deatiled 될 것을 기대하기 때문에 사용자에게 혼란을 줄 것입니다 당신이 반환 값을 보여 위하여려고하는 경우에.

Karim79는 적절한 접근법을 가지고 있다고 생각하지만 오류 처리를 위해 완전히 새로운 페이지를 디자인해야하기 때문에 너무 복잡합니다.

페이지 자체에서 자체 오류 처리 기능을 설정하고 응답을 기반으로 사람이 읽을 수있는 메시지를 표시하는 것이 좋습니다.

그것은이 오류 응답 코드는 단지 HTML 조각보다는 반환 보장하기 위해 OP를 필요로이

$.post("myAction",$("#myForm").serialize(), 
     function(response) { 
      alert(response); 
      if(response == 'Error') { 
       $('#errorMsg").html("Could not get results from server. Please try again later."); 
      } 

}); 
관련 문제