如何发送一个Ajax请求而不是两个

问题描述:

我有一个带有输入文本的表单的JSP页面。当我提交时,它会转到一个servlet。该servlet使用request.setAttribute()处理并创建一些对象并设置请求。然后它转发到一个页面,该页面具有一些使用servlet中设置的对象的自定义JSP标记。如何发送一个Ajax请求而不是两个

我想用Ajax代替它。我已经实现它如下:

首先,表单通过使用POST的Ajax提交,之前使用request.setAttribute()设置的对象被转换为JSON字符串并作为响应发送。成功时,会有另一个Ajax GET调用到具有我自定义标记的JSP页面,并且JSON字符串作为参数传递。此Ajax调用的响应设置在div内。

但它是两个Ajax请求。我怎样才能让它成为一个单一的Ajax请求呢?

+0

关闭一个,但在这里我想尽可能减少JS。 AJAX无论如何都使用JS,但我想利用现有的JSP而不是在JS或servlet中构造页面。 – Prabhat 2011-06-02 12:01:40

+0

[如何使用Servlets和Ajax?](http://stackoverflow.com/questions/4112686)可能的重复您可以使用现有的JSP。只需添加一个'',其中您可以逐步增强页面而不更改其核心功能。只有servlet必须被更改为执行条件检查,如果它是ajax请求,然后进行相应处理。另请参阅[简单计算器在JSP](http://stackoverflow.com/questions/4114742)。不使用jQuery意味着您必须编写至少10​​倍的JS代码才能在世界知道的所有浏览器中运行。 – BalusC 2011-06-02 12:02:54

+0

@BalusC - 当我说我想利用现有的JSP时,我的意思是使用具有自定义标签的目标JSP。在“简单的JSP计算器”中,它被转发到同一页面。我想从index.jsp转发请求到使用AJAX定制标签的next.jsp。 next.jsp的数据必须由servlet中设置的对象提供。 – Prabhat 2011-06-02 12:23:15

根据注释,您只需要让第一个请求转发到所需的JSP,而不是返回JSON字符串,然后再返回给JSP。

request.getRequestDispatcher("/WEB-INF/next.jsp?jsonstring=" + jsonstring).forward(request, response);