我有一个场景,我在JSP页面中有一个发送电子邮件的按钮,请求使用jQuery Ajax和JSON发送到servlet 异步,在DB中搜索servlet,如果用户有电子邮件,它返回电子邮件地址并向其发送电子邮件,然后成功或无法发送电子邮件转发到结果页面,但在用户没有电子邮件的情况下,它使用JSON返回错误值JSP然后一个JSP表单出现给用户输入他的电子邮件。
使用Ajax是不错的做法,我知道每次都没有给用户返回值或使用get 方法向servlet发送请求,返回参数在用户没有电子邮件的情况下?
答案 0 :(得分:3)
使用ajax几乎在所有情况下都非常适合User Experience。使用ajax,用户将体验即时反馈而无需面对恼人的“内容闪存”或(部分)空白页面,因为整个HTML响应需要首先由服务器生成/缓冲。这真的是使用JS / ajax的一大优势。
使用JSON通常优于XML,HTML甚至纯文本。但是对于客户端和服务器之间的ajax数据交换格式没有“最佳实践”。只需挑选最适合要求的东西。对于这种情况,JSON非常好。 jQuery理解它是开箱即用的,在Java中你可以选择多种易于使用的JSON解析器。
但是,在开发支持Ajax的Web应用程序时,您确实需要考虑当客户端具有JS 禁用时,核心功能不中断。这称为Unobtrusive JavaScript。大多数搜索机器人,移动浏览器和基于文本的浏览器都不使用JS。您应该尝试仅为Progressive Enhancements使用JS。要自己测试一下,在Firefox中你可以使用Web Developer Toolbar来轻松启用/禁用JS支持。在禁用JS的情况下运行您的网站,并观察核心功能是否也得到维护。
实现这一目标的最佳方法是在没有任何单行JS代码的情况下开始开发网站,即使HTML元素上没有单个onclick
,onsubmit
,onwhatever
属性。一旦你获得了核心功能,你就可以开始在脚本的味道中添加JS,它在文档就绪期间执行,并将功能附加到感兴趣的HTML元素上(即使在这里,你应该不更改原始的HTML代码!)。让JS函数根据需要在同一个URL或可能不同的URL上激发ajax请求。您可以在Servlet中区分ajax和普通请求,如下所示:
if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) {
// Handle ajax request. Return JSON response here.
} else {
// Handle normal request. Return normal HTML response here (by JSP).
}
答案 1 :(得分:1)
Json只是一种数据交换格式。是否使用Json与使用异步通信无关...您可以使用Json(或XML或序列化对象,无关紧要)来执行这两种通信类型。
现在,在您的问题中,您似乎只想使用异步通信来改善用户体验(它不会轻弹用户的浏览器)。如果是这种情况,可以采用异步通信方式!
答案 2 :(得分:0)
我认为你不需要在这里使用AJAX。 ajax的主要思想是在没有回发的情况下呈现服务器响应,在您获得某种结果后,您将重定向页面。
在我看来,你应该选择这两种方式。
1)使用AJAX,将数据发送到servlet,然后从服务器呈现响应是否发送邮件。
2)将您的表单提交给servlet并发送电子邮件,然后使用成功/失败结果重定向到jsp。
希望它有所帮助。