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 加密 AJAX 调用以进行身份验证?
jQuery Ajax传值给Servlet,在Servlet里接受参数乱码的解决方法