微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在基于ajax的网站和基本的HTML网站之间轻松切换?

我有一个网站(基于JSP / Servlets,使用MVC模式),我想支持基于 AJAX的网站和基于 HTML的基本网站.网站访问者应该能够将冲浪模式从Ajax更改为基本HTML,反之亦然,因为它适用于Google邮件.

问题:

>轻松实现这一目标的最佳方法是什么?
>我应该为每个页面设计两个视图吗?

我使用JQuery和JSON作为这个answer的结果.

解决方法

你需要 Unobtrusive Javascript,这是 Progressive Enhancement的一部分.

首先,开始创建一个功能齐全的Web应用程序,不需要任何Javascript.一旦你开始工作,然后开始编写Javascript代码,“接管”原始HTML工作,而不更改任何HTML / CSS行.在服务器端代码中,您需要添加逻辑,以识别请求是否已被JavaScript触发并相应地返回响应.您可以通过在webbrowser中启用/禁用JavaScript来测试这两种情况.在Firefox中,使用Web Developer Toolbar很容易.

例如,您有一个包含所有HTML链接邮件列表,这些邮件显示邮件正文:

<a href="mail/show/1" class="show">Message title</a>

如果没有JavaScript,这将向servlet发出HTTP请求,该请求加载由1标识的邮件,将请求转发到JSP,该JSP在视图中隐藏消息列表并在视图中显示邮件.

使用JavaScript / jQuery,您需要编写在Ajax的帮助下完全相同的代码,例如:

$('a.show').click(function() {
    $.getJSON(this.href,callbackFunctionWhichHidesListAndShowsMail);
    return false;
});

在服务器端,您必须区分正常请求和ajax请求,以便您可以相应地返回响应.

boolean ajax = "XMLHttpRequest".equals(request.getHeader("x-requested-with"));

// ...

if (ajax) {
    writeJson(response,mail);
} else {
    request.setAttribute("mail",mail);
    request.getRequestdispatcher("/WEB-INF/mail.jsp").forward(request,response);
}

最后,为了给用户一个手动切换模式的选项,你必须设置一个cookie或者最好(因为cookie是可以禁用的)传递URL中的一些信息(pathinfo或request参数),这会强制服务器禁用发出<脚本>线.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐