2010-08-05 5 views
0

나는 다음과 같은 AJAX 요청을 보내고 :Grails에서 AJAX 오류 콜백에서 오류 메시지를 검색하는 방법은 무엇입니까?

$.ajax({ type: 'POST', 
    data: $(this).parents('form:first').serialize(), url:'/myapp/comment/saveOrUpdate', 
    success: function(data,textStatus) {insertNewComment(data)}, 
    error: function(xhr, textStatus, errorThrown) {alert(xhr.responseText);} 
}) 

을 ... 그리고 내 컨트롤러 액션은 다음과 같습니다

class CommentController { 
... 
def saveOrUpdate = { 
    ... 
    if (error) { 
     response.sendError 419, 'You must wait at least 5 minutes before posting a new comment' 
    } 
}} 

불행하게도, 내가 HTTP 응답에 보내는 메시지를 볼 수 없습니다.

<html><head><title>Apache Tomcat/6.0-snapshot - Error report</title> 
</head><body><h1>HTTP Status 419 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>Cannot find message associated with key http.419</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/6.0-snapshot</h3></body></html> 

이 어떻게 자바 스크립트 코드 메시지 '당신은에서 검색하기 위해 생성 된 오류 HTML 페이지를 우회 할 수있다 : 대신에, 나는처럼 보이는/아파치 톰캣 (? 또는 Grails의)에서 발생하는 오류 HTML 페이지를 가지고 기다려야한다 ... '?

도움 주셔서 감사합니다.

답변

0

당신은 HTTP 상태 오류를 설정하고 있지만 실제로 비즈니스 논리 문제, 즉 응용 프로그램 오류가 발생했습니다. 적절한 애플리케이션 수준의 상태 코드와 메시지 (자신의 디자인)를 설정하고 아약스 응답 (시간 남음 포함)에 반환하는 것이 어떨까요? HTTP 오류 코드를 사용하는 경우 다른 브라우저에서 다른 결과를 얻을 수 있으며 오류 페이지가 512 바이트 미만인 경우 오류 메시지가 도용됩니다.

ErrorDocument 419 /errordocs/419.html 

... 그리고 그 419.html 페이지를 만들 : 당신이 인용하는 경우

는 아파치는 419

일치 알려진 오류 메시지 당신은 당신의 .htaccess 설정에 하나를 추가 할 수 있습니다를 발견하지 원하는 것을 말하고 (페이지가 512 바이트를 초과하지 않도록) 하지만 응용 프로그램 수준 상태 코드로 작업하는 것이 당신이 찾고있는 것입니다.

+0

제안한대로 응용 프로그램 수준 상태 코드를 구현했습니다. 감사합니다. – fabien7474

관련 문제