2011-06-02 101 views
0

我有一個帶有輸入文本的表單的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

回答

0

根據註釋,您只需要讓第一個請求轉發到所需的JSP,而不是返回JSON字符串,然後再返回給JSP。

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