2016-09-14 3 views
-1

이 질문에 대한 추가 정보 jQuery Ajax error handling, show custom exception messages 양식을 제출했지만 오류가 발생하면 ColdFusion에서 사용자 정의 오류 메시지 (AJAX를 통해)를 사용자에게 표시하려고합니다. ColdFusion에서 생산,ColdFusion에서 jQuery Ajax 오류보고

... 
error: function (xhr, textStatus, thrownError) { 
         $('p').text(thrownError); 
        } 

그러나 :

내가 jQuery를 다시 같은 같은 오류를 보여 따라서 쉬운 200이 아닌 응답 상태 코드를 반환하는 표준 <cfthrow errorcode="500" message="You did something wrong"/>를 사용하여이 작업을 수행하기 위해 노력했다 서버의 경우 디버그 설정에서 오류보고를 해제하는 것이 좋습니다. 이제 사용자가 보게되는 메시지는 사용자 지정 메시지 대신 "Internal server error"입니다.

임시 해결책은 이제 <cfreturn "Error: You did something wrong"/> <cfabort>을 수행 한 다음 jQuery가 텍스트가 "오류 :"로 시작하는 서버에서 반환 된 결과를 찾도록하는 것입니다.

<cfthrow>으로 적절한 예외 처리를 사용하는 편이 낫습니다. 디버깅을 해제하라는 권장 사항을 어떻게 받아 들일 수 있습니까?

+1

응답이 JSON 패킷입니까? 그렇다면 JSON에'success' 속성 및/또는'error' 메시지를 포함시키고 클라이언트 측에서 응답을받을 때 그 값을 확인하십시오. –

+0

이렇게하면 ajax 호출의'success()'메소드에서 항상 처리 될 것입니다. 이제 ColdFusion에서 반환 된 결과에서'Error :'문자열을 찾고 있습니다. 성공 방법에서 오류를 처리하는 것은 잘못된 것처럼 보입니다. –

+0

SEO를 비롯한 여러 가지 이유로 잘못되었습니다. 페이지가 200 회 성공하면 검색 크롤러에게 페이지 응답에 오류가 있음을 알리는 메시지는 없습니다. –

답변

-1

<cfthrow> errorCode는 HTTP 상태 코드 응답이 아닙니다. 잡히지 않은 오류가 발생하면 기본값은 <cfthrow>의 오류 코드와 상관없이 500 HTTP 상태 코드로 응답하는 것입니다. 이 경우 jquery.ajax().error() 메소드를 사용하여 사용자에게 메시지를 표시하고자 할 수 있습니다. 종종 오류를 의도적으로 던지지 않고 500 개의 상태 코드 헤더 만 포함하려는 경우가 많습니다. 또는 질문에 표시 한대로 $.ajax().success()에서 조건부로 처리되는 일부 값이있는 return을 사용할 수 있습니다.

+0

예, 문제는 'error()'메소드가 프로덕션 서버의 ColdFusion 관리자에서 오류보고가 해제되어 있으므로 오류 메시지를 표시 할 수 없다는 것입니다. 따라서 내 딜레마/질문입니다. –

+0

서버에서 클라이언트로 오류를 반환하려면 오류를 catch하고 error 또는 error.message 만 반환해야합니다. CF가 자바 스크립트에 예외 정보를 제공하는 것은 자연스럽지 않습니다. 프로덕션 시스템에서 일반적으로 예외 정보가 해제되는 이유가 있습니다. –

1

비슷한 문제가있었습니다. 먼저 서버 설정 -> 설정 아래의 CF 관리자에서 "HTTP 상태 코드 사용"을 선택 해제하십시오. ColdFusion 서버를 다시 시작해야 할 수도 있습니다. 그러면 CF가 모든 상태를 404 또는 500으로 설정하지 못하게됩니다. 그런 다음 서버 코드에 아래 줄을 추가하십시오 (예외/코드에 따라 수정하십시오).

<cfthrow type="Authentication" errorcode="450" message="this is message"> 

자바 스크립트 오류 처리기에 450 개의 상태 코드가 있어야합니다.