2014. 11. 3. 16:35ㆍ공부
우리는 흔히 아래와 같은 코드로 ajax 호출을 시도합니다..
( jQuery 신이시여 감사합니다. )
$.ajax({
type: 'POST',
dataType: 'text',
url: callURL,
data: $('#onBoardForm').serialize(),
success: function ( text ) {
alert( text );
opener.location.replace( "${pageContext.request.contextPath}/list.jsp" );
self.close();
},
error: function ( request, status, error ) {
alert( request.responseText );
}
success 는 호출한 서버측에서 200 ok ( 202 도 되나 ) 를 주면 타게 되고.
error 은 각종 404, 500, 등등의 에러코드를 response.setStaus() 로 주면 타게 됩니다...
그래서 흔희 아래와 같은 코드를 서버쪽에서 작성하게 되지요.
response.setStatus( HttpServletResponse.SC_INTERNAL_SERVER_ERROR );
response.getWriter().write( "VNF Instance 생성 권한이 없습니다." );
return;
그런데.. 문제가 생겼습니다.
파일 업로드를 ajax로 작성하고, 이미 파일이 있다는 의미로, response.setStatus("HttpServletResponse.SC_INTERNAL_SERVER_ERROR") 를 줬습니다.
HTTP 302 에러죠..
크롬으로 코딩하면서 술술 넘어갔습니다....
error 코드를 제대로 탔거든요..
하지만 explorer 로 테스트를 하자 문제가 생겼습니다.
success 도 타지 않고, error 도 타지 않고, pending 이 걸리는 문제가 생겼죠..
아마도 HTTP response code 별로 각 브라우저가 해석하는 방법이 조금 다른 듯 싶습니다.
시간도 없고, 빨리 처리해야 해서, 그냥 500 에러를 던지고 처리하는 방법을 택했는데..
시간이 나면 Http response code 별로 브라우저들이 어떻게 처리하는지 알아보는게 좋을 듯 하네요..
덕분에 삽질 좀 했습니다.