2012-08-02 151 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

相关问题