2012-05-04 31 views
1

サーブレットをコントローラとjqueryとして使用してサーバにリクエストを送信しています。以下の私は、サーブレットでエラーメッセージとエラーのエラーステータスコードを設定するとjQueryで同じステータスコードを読みたい私のjqueryの要求jqueryを使用してHTTPステータスコードとメッセージを取得する方法

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

そして、サーバ側で私はコード

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ステータスを設定するには、Javaサーブレットで次

$.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です。 jQueryの側では

は、次のように使用することができます。

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

私はtextStatus変数が状態を保持していると思いますが、documentationは、それが返すことができるかについては何も言いません。

+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(); –

関連する問題