AJAX POST并不总是发生

时间:2014-01-16 12:41:07

标签: ajax hibernate java-ee

我试图将AJAX合并到我构建的应用程序中。

基本功能是:

- 用户单击一个按钮,该按钮触发JS代码,该代码进行AJAX调用,对Servlet进行POST(发送帐户数据)。

- Servlet(其中注入了一个EJB),通过它的本地接口与EJB通信。

- EJB(在init上)初始化DAO对象,将EntityManager注入其中,并使用该DAO对象通过JPA(Hibernate作为提供者)与数据库通信。

- EJB的本地接口方法返回数据传输对象,它们在Servlets doPost()方法中解析,而DTO用于构建Servlet响应AJAX调用的HTML表(String)。

- 在客户端,我使用该HTML表(responseText)来更新页面上的div。

我有两个问题:

1)在使用AJAX的企业级应用程序中,使用以数据为中心的AJAX调用方法(返回HTML表而不是JSON字符串)是一种常见的选择吗?

2)我注意到有时甚至没有调用POST。这似乎是间歇性的。我试图添加Cache Control标头,但这似乎不起作用。这让我很担心,特别是当我考虑最终将应用程序部署到生产环境时,可能AJAX不是可行的方法,但是当它运行时,应用程序可以顺利运行。

1 个答案:

答案 0 :(得分: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请求,只需确保您有一些指示,以便用户通知他们请求正在进行/完成。