2011-01-20 72 views
2

我寫了一個簡單的servlet來處理Ajax請求。在服務器端,調用doPost,但我在響應對象中設置的數據不反映在客戶端上。 (其實,根據Firebug,我沒有在客戶端上得到任何東西)。我正在使用jQuery來處理Ajax。通過Ajax沒有servlet響應

客戶端代碼:

$.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 2011-01-20 20:35:22

回答

4

您需要逐步調試此問題,因爲此問題可能意味着任何不正確的Servlet配置到客戶端代碼中的錯誤。

  1. 你在XBRL(AJAX)請求的螢火蟲中看到了什麼狀態碼? (除了200以外的任何內容都是紅旗。檢查服務器日誌)
  2. 是否正在執行您的system.out語句?即「!!!在帖子!!!!」登錄?
  3. 用一個表單發佈到servlet並查看是否得到任何結果返回,創建一個簡單的html。
  4. 根據以上步驟的結果,如果需要進一步調試。
+0

1.我得到一個200 2. system.out正在打印 3. Firebug說我得到一個空的響應,但xml標籤說:XML解析錯誤:找不到元素位置:moz-nullprincipal: {7209b27a-18e0-4494-966b-e8951482d9a8}行號1,列1: – maximus 2011-01-20 20:49:23

+1

嘗試將內容類型設置爲「text/xml」 – 2011-01-20 21:36:40

-1

您可能需要顯式地關閉輸出流 -

PrintWriter out = res.getWriter(); 

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