2014-01-16 29 views
0

我試圖將AJAX合併到我構建的應用程序中。AJAX POST並不總是發生

的基本功能是:

- 用戶clickes一個按鈕,這觸發JS代碼,使AJAX調用,做了POST到Servlet(發送賬戶數據)。

-Servlet(其中注入了EJB)通過它的本地接口與EJB進行通信。

- EJB(on init)初始化一個DAO對象,向其中注入一個EntityManager,並使用該DAO對象通過JPA(Hibernate作爲提供者)與數據庫進行通信。

- 在Servlet doPost()方法中分析的EJB返回數據傳輸對象的本地接口方法,以及DTO用於構建Servlet響應AJAX調用的HTML表(String) 。

- 在客戶端,我使用該HTML表格(responseText)更新頁面上的div。

我有2個問題:

1)是使用以數據爲中心的方法來AJAX調用(返回一個HTML表格,而不是JSON字符串)在企業級應用程序,利用AJAX的共同選擇?

2)我注意到有時POST甚至沒有被調用。它似乎是間歇性的。我試圖添加緩存控制標題,但似乎沒有工作。這尤其關係到我,尤其是當我考慮最終將應用程序部署到生產環境時,或許AJAX不是可行的方法,但是當它運行時,應用程序可以順利運行。

回答

0

1)使用AJAX提交數據或更新網頁是非常普遍的。頁面一次應用程序是舊的Web應用程序過去完成的方式,您需要重新加載整個頁面才能更新一點信息 - 這樣做效率低下,更不用說會造成糟糕的用戶體驗。現在,只更新「頁面的一部分」是非常常見的,主要是使用AJAX,如果不是WebSockets。

現在您有關使用服務器響應(即HTML)更新頁面的問題 - 更新頁面或僅獲取JSON字符串並操作DOM(即添加表格等)。我已經使用了這些組合。例如,如果需要向表中添加一行,可以使用誘人引擎(groovy或類似的方法)讓服務器生成HTML。此外,您需要響應代碼,因此您可以將HTML代碼和響應代碼打包爲JSON並將其發送回客戶端。這些工作的任何組合取決於您的使用情況。

JsonObject json = new JsonObject(); 
json.addProperty("responseCode", responseCode); 
json.addProperty("html", html); 

2)你可以寫一個簡單的腳本來多個請求發送到AJAX網址,看看它是不是能夠處理的請求數量的服務器。如果它有效,那麼你可以將問題縮小到客戶端。確保你沒有使用阻塞技術。你也可以設置一個回調函數來查看是否有任何迴應。 AJAX Post類似於普通的POST請求,只要確保你有一些用戶的指示符,通知他們請求正在進行/完成。

相關問題