2011-01-20 25 views
2

Ajaxリクエストを処理するための簡単なサーブレットを作成しました。サーバー側ではdoPostが呼び出されますが、応答オブジェクトで設定したデータはクライアントに反映されません。 (実際、Firebugによれば、私はクライアント上で何も取得していません)。私は、Ajaxを処理するためにjQueryを使用しています。Ajax経由のサーブレット応答なし

クライアントコード:サーバー上で

$.post(
    '/mapped/url?param=' + $('#eleId').val(), 
     function(data){ 
     alert(data); 
     }, 
     "xml" 
); 

:事前に

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    System.out.println("!!!In post!!!!"); 
    // some calculations go here 

    response.setContentType("application/xml"); 
    response.setHeader("Cache-Control", "no-cache"); 

    response.getWriter().write("<data><param number=\"\"></param></data>"); 
      response.setStatus(HttpServletResponse.SC_OK); 
} 

ありがとう!

+1

は、サーバーのログを読み、一方及び他方を排除するためにweb.xml' 'から任意の' 'を削除します。レスポンスボディがすでにコミットされている場合、レスポンスステータスの設定は不可能です。あらかじめそれを行う必要がありますが、それでもなお、ステータス200を設定することは既定で既に行われています。その行を削除するだけです。 – BalusC

答えて

4

この問題は、サーブレットの不適切な設定からクライアント側のコードのバグまで何かを意味する可能性があるため、これを段階的にデバッグする必要があります。

  1. XHR(AJAX)リクエストのFirebugにはどのようなステータスコードが表示されていますか? (200以外は赤いフラグです。サーバログをチェックしてください)
  2. あなたのsystem.out文は実行されていますか?つまり「!!!でポスト!!!!」ログ?
  3. サーブレットに投稿するフォームで単純なhtmlを作成し、結果が戻ってくるかどうかを確認します。
  4. 上記の手順の結果に応じて、必要に応じてさらにデバッグしてください。
+0

1.私は200を得ています 2. system.outが印刷されています 3. Firebugは空の応答を得ていますが、xmlタブには次のようなメッセージが表示されます:XML解析エラー:要素が見つかりません場所:moz-nullprincipal: {7209b27a-18e0-4494-966b-e8951482d9a8}行番号1、列1: – maximus

+1

コンテンツタイプを "text/xml"に設定してみてください –

+0

これはありがとうございました! – maximus

-1

あなたは明示的に出力ストリームをクローズする必要があります -

PrintWriter out = res.getWriter(); 

    out.println("Sample response"); 
    out.close(); 
+3

-1:これはすでにコンテナによって行われています。もしそうでなければ、OPだけが重大な問題を抱えているのではなく、コンテナ内のバグやもっと多くの人がいるでしょう。 – BalusC

関連する問題