我有一个网页,其中部分页面是通过AJAX加载的, 但如果没有启用JavaScript,我也想让它工作。
所以,我把代码编写为
<script>
fetchCitiesAndDisplay ();
</script>
<noscript>
<%
out.print(Cities.getHtml ());
%>
</noscript>
,其中
fetchCitiesAndDisplay()
是一个javaScript方法,它将获取内容(执行Cities.java中的代码)并显示它。
Cities.java
是一个Java类,它将从数据库中收集城市并生成要显示的html内容。
当JavaScript关闭时,一切都很好......因为ajax调用不会被执行,只有一个Cities.getHtml()会被调用。
但是,当启用JavaScript时,也会执行Ajax调用并且还会调用Cities.getHtml()..即使显示因为标记看起来正确,Cities.java也会为同一数据获取两次调用,它吃了很多时间......
如何解决这个问题?
答案 0 :(得分:1)
我想知道你是否不理解<noscript>
是如何运作的。它不会在您的服务器端模板中发挥作用,因此您放入的任何服务器端逻辑都将始终执行,无论是否最终在浏览器中启用了javascript。
因此,这对我来说并没有多大意义,因为无论javascript是打开还是关闭,都会生成<noscript>
内的HTML。它将始终在页面中。所以,如果它总是在页面中,那么为什么当javascript开启时通过ajax获取它?
答案 1 :(得分:0)
我必须同意@ jfriend00,如果使用1页启用javascript则无法识别
您可以使用javascript设置一个隐藏变量,当页面提交时您可以检查它并确定是否启用了javascript ..但这需要1个请求/响应周期,可能您可以拥有将请求转发到预期页面的临时页面(使用上面讨论的隐藏变量)。
答案 2 :(得分:0)
为什么不让你的javascript代码在页面加载时加载一个小的html / image / etc片段。如果启用了javascript,您可以看到该文件已被请求。如果它被禁用,则不会请求该文件。