【发布时间】:2011-06-02 11:53:28
【问题描述】:
我有一个 JSP 页面,它有一个带有输入文本的表单。当我提交时,它会转到一个 servlet。 servlet 使用request.setAttribute() 在请求中处理并创建一些对象和集合。然后它转发到一个页面,该页面具有一些自定义 JSP 标记,这些标记使用 servlet 中设置的对象。
我想用 Ajax 替换它。我已经实现了如下:
首先,表单使用 POST 通过 Ajax 提交,之前使用 request.setAttribute() 设置的对象被转换为 JSON 字符串并作为响应发送。成功后,对 JSP 页面进行另一个 Ajax GET 调用,该页面具有我的自定义标记,并且 JSON 字符串作为参数传递。此 Ajax 调用的响应设置在 div 中。
但这是两个 Ajax 请求。我怎样才能使它成为一个 Ajax 请求呢?
【问题讨论】:
-
关闭一个但这里我想尽可能减少JS。 AJAX 无论如何都使用 JS,但我想利用现有的 JSP 而不是在 JS 或 servlet 中构建页面。
-
How to use Servlets and Ajax? 的可能副本 您可以利用现有的 JSP。只需添加一个
<script src="some.js"></script>,您就可以在不改变其核心功能的情况下逐步增强页面。只需更改 servlet 以进行条件检查,是否为 ajax 请求,然后进行相应处理。另见Simple calculator in JSP。不使用 jQuery 意味着你必须编写至少 10 倍的 JS 代码才能让它在全世界都知道的所有浏览器中工作。 -
@BalusC - 当我说我想利用现有的 JSP 时,我的意思是利用具有我的自定义标签的目标 JSP。在“JSP 中的简单计算器”示例中,它被转发到同一页面。我想将请求从 index.jsp 转发到 next.jsp,它有我使用 AJAX 的自定义标签。 next.jsp 的数据必须由 servlet 中设置的对象提供。
-
这不是必需的。这就是 MVC 的工作原理。
-
是的。您需要转发到
next.jsp?jsonstring=jsonstring,而不是在第一个 ajax 请求中返回 JSON。这有效地返回 HTML。