2012-08-02 149 views
1

我是ajax和js的新手。將數據從js發送到servlet並獲取響應

我有一個簡單的jsp頁面,裏面有一個html。我有一個伴隨的JavaScript文件,我已經定義了我所有的功能。我有一個這樣的函數發送一些json數據到servlet。 我只需要幫助將servlet的響應恢復到調用的js文件中。

我使用post方法啓動並運行servlet,因爲它接收到ajax調用。

假設js文件名是:First.js和servlet是FirstServlet.java

JavaScript部分從JS發送的數據的servlet:

var fullpath="contextpath/FirstServlet"; 

    //Sending the tradedata using ajax to the FirstServlet 
    $.ajax({ 
     dataType: 'json', 
     url: fullpath, 
     type: 'POST', 
     data: {jsonText:jsonText} 

    }); 

Servlet的側我對數據做一些修改並建立一個動態的html servlet的輸出將被添加到字符串變量中。

<div> 
    <table> 
    <tbody> 
     <tr> 
      <td> 
      <input name="hi" value="hello" /> 
      </td> 
      <td> 
      <input name="bye" value="goodbye" /> 
      </td> 
     </tr> 
    </tbody> 
    </table> 
    </div> 

我希望要返回這個標記來調用它的這部分//需要解決同一個JavaScript文件。

最終目標: 然後我想將它添加到一個div標籤我對JSP文件//我會使用jQuery添加此。這樣我就可以在不使用iframe的情況下刷新div容器。

回答

1

如果您使用的是Java Servlet,則需要構建定製的HttpServlet,該HttpServlet必須實現doGet(HttpServletRequest req, HttpServletResponse resp)doPost(HttpRequest req, HttpResponse resp)的功能。一旦您將特定域名(在您的示例中爲contextpath/FirstServlet)映射到您的自定義servlet類(在您的web.xml文件中),servlet將自動將任何getpost請求路由到您的doGet或doPost函數。

然後,您可以使用可用於HttpServletRequest(reference)的函數來處理收到的數據。然後,將您希望發送回客戶端的任何內容放到HttpServletResponse中(請參閱下面的示例鏈接),然後servlet自動將HttpServletResponse發送回客戶端。

爲了從客戶端接收響應數據,你只需要添加一個回調函數(即接受兩個參數,見參考文獻here)作爲Ajax請求的最後一個參數,像這樣:

$.ajax({ 
    dataType: 'json', 
    url: fullpath, 
    type: 'POST', 
    data: {jsonText:jsonText} 

}, function(responseData, textStatus) { 
    console.log(responseData); 
    //do something with responseData 
}); 

Here's a simple example servlet

+0

您好,感謝您的回覆。我現在已經在post方法中使用了servlet,因爲它接收到了ajax調用,所以我懷疑發送的是從servlet到js的響應。 – 2012-08-02 23:43:23

+0

如果你看我的答案底部的鏈接,你會發現你在找什麼。你基本寫入response.getWriter()對象。這是第3.1節。 – laker 2012-08-02 23:51:18

+0

因此,如果我在我的文章中寫了response.getwriter,我應該能夠在我的ajax中獲得響應?是的,我該如何修改ajax調用來取回請求。 – 2012-08-03 00:41:36

相關問題