jQuery - Servlet 的 AJAX 调用

Posted

技术标签:

【中文标题】jQuery - Servlet 的 AJAX 调用【英文标题】:jQuery - AJAX call of Servlet 【发布时间】:2014-03-26 08:47:29 【问题描述】:

我正在为商店科学出版物构建一个网络应用程序。我用过 mysql、JSP、jQuery 和 JAVA。

我在 JSP 页面中有一个表单,如下所示:

<form method="get">
    <input type="text" id="code">
    <button onclick="request()">Search</button>
</form>

函数request()是:

function request() 
    var code = $('#code').val();
    var data='code='+code;
    $.ajax(
          url: "Servlet",
          type: "GET",
          data: data,
          success: function()
              alert("success");
          ,
          error:function()
              alert("failure");
             
        ); 
;

Servlet 做一些事情,然后将查询的结果集保存在请求对象中,并像这样将结果转发到索引上

request.setAttribute("result", resultSet);
RequestDispatcher dispatcher = this.getServletContext().getRequestDispatcher("/index.jsp");
dispatcher.forward(request, response);

index.jsp 包含:

 <%  if(request.getAttribute("result")!=null) %>
        <jsp:include page="table.jsp" />
  <%%>

检查结果集是否已经填满,然后包含 table.jsp,页面扫描结果集并将值放入表中。

此代码不起作用,有人可以帮助我吗? 1-查询正确运行 2- jQuery 被正确调用

但是

if(request.getAttribute("result"))

始终为空。

【问题讨论】:

看来您正在混淆 ajax 和同步处理。一般来说,ajax 响应会附加到 servletresponse 流中。 代替request.setAttribute("result", resultSet); 尝试使用像session.setAttribute("result", resultSet); 这样的会话。 难波里你是对的!我将两个不能很好地结合在一起的概念混合在一起。我回到表单上的简单“动作”,它调用 servlet。谢谢。 【参考方案1】:

尝试让你的 Servlet 扩展 HttpServlet,并尝试如下:

public class TestServlet extends HttpServlet 

    private static final long serialVersionUID = 1L;


    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException 

        doPost(request,response);
    


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException 

        response.setContentType("text/html");
        response.setCharacterEncoding("UTF-8");
        request.setAttribute("result", "value");
        request.getRequestDispatcher("/index.jsp").forward(request, response);
    


【讨论】:

以上是关于jQuery - Servlet 的 AJAX 调用的主要内容,如果未能解决你的问题,请参考以下文章

jQuery - Servlet 的 AJAX 调用

是否可以使用 jQuery 加密 AJAX 调用以进行身份​​验证?

jQuery Ajax传值给Servlet,在Servlet里接受参数乱码的解决方法

jQuery Ajax:返回值给调用者?

从 servlet 中调用错误 jQuery ajax 回调

JQuery $.ajax() post - java servlet 中的数据