2012-05-04 3 views
1

서블릿을 컨트롤러로 사용하고 jquery를 사용하여 서버에 요청을 보냅니다. 다음은 내 JQuery와 요청jquery를 사용하여 HTTP 상태 코드 및 메시지를 얻는 방법

$.post("login", {userName:$userName, password:$password}, function(data, textStatus) { 
alert(textStatus); 
}); 

되고 서버 측에서 내가 코드

나는 서블릿에서 오류 메시지와 오류 오류 상태 코드를 설정하고 JQuery와 동일한 상태 코드를 읽을 수
response.setContentType("text/plain"); 
      PrintWriter out = response.getWriter(); 
      out.println("" + strError + ""); 
      out.flush(); 
      out.close(); 

다음 작성했습니다. 어떻게하면 같은 결과를 얻을 수 있습니까?

답변

0

서버에서 json으로 인코딩 된 문자열을 반환 할 수 있습니다. How do you return a JSON object from a Java Servlet

예를 들어 다음 json 인코딩 된 문자열을 보낸 경우. : 당신이 HTTP 상태를 설정하기 위해, 자바 서블릿에서 다음

$.post("login", {userName:$userName, password:$password}, function(data, textStatus) { 
    alert(data.error); // your error message will show up here in the data object 
},'json'); 
0

를 할 것 클라이언트 측에서 다음

{ '오류' '이 몇 가지 오류 메시지입니다'}, 당신은 사용해야합니다 다음

response.setStatus(code); 

code 부분은 오류 404을 에뮬레이션하는 HttpServletResponse.SC_NOT_FOUND 같은 몇 가지 할 수 있습니다 (페이지를 찾을 수 없습니다). 전체 목록은 here입니다.

$.post('login', { /* ... */ }, function(data, textStatus, xhrObject) { 
    // You can read the status returned with 
    xhrObject.status; 
}); 

내가 textStatus 변수가 상태를 보유하고 생각하지만, documentation이 그것을 반환 할 수 있는지에 대해 아무 말도하지 않습니다 JQuery와 측면에서

, 당신은 다음과 같은 사용할 수 있습니다.

+0

서블릿에서 상태를 설정하면 jquery에서 상태 코드가 표시되지 않습니다. 당신이 지금 제안한 것과 똑같은 행동을했습니다. –

+0

디버거에서'textStatus' 변수에있는 것을 보려고 했습니까? 'xhrObject'와 동일합니까? –

+0

상태 코드를 설정하면 디버거가 그 기능을 수행하지 않습니다. 상태 코드를 설정하지 않으면 상태 코드가 200으로 표시됩니다. 서블릿 response.setStatus (response.SC_BAD_REQUEST)에 다음을 작성했습니다. response.setContentType ("text/plain"); PrintWriter out = 응답 .getWriter(); out.println (""+ strError + ""); out.flush(); out.close(); –

관련 문제