0

我有一个网页,其中部分页面是通过 AJAX 加载的,但如果未启用 JavaScript,我也想让它工作。

所以,我把代码写成

<script>
    fetchCitiesAndDisplay ();
</script>
<noscript>
    <%
        out.print(Cities.getHtml ());
    %>
</noscript>

在哪里

获取城市和显示()

是一个 javaScript 方法,它将获取内容(执行 Cities.java 中的代码)并显示它。

城市.java

是一个 Java 类,它将从数据库中收集城市并生成要显示的 html 内容。

当 JavaScript 关闭时,一切正常......因为 ajax 调用不会被执行,只有 Cities.getHtml () 会被调用一次。

但是,当 JavaScript 被启用时,Ajax 调用也会被执行并且 Cities.getHtml() 也会被调用.. 即使显示因为标签而看起来正确,Cities.java 会为相同的数据调用两次,并且它吃掉很多时间...

如何解决这个问题?

4

3 回答 3

1

我想知道你是否不明白它是如何<noscript>工作的。它不会在您的服务器端模板中发挥作用,因此无论您放入其中的服务器端逻辑是否最终在浏览器中启用,都将始终执行。

因此,这对我来说没有多大意义,因为<noscript>无论 javascript 是打开还是关闭,都会生成里面的 HTML。它将始终在页面中。那么,如果它总是在页面中,那么为什么在打开 javascript 时通过 ajax 获取它呢?

于 2012-01-10T01:53:33.747 回答
0

我必须同意@jfriend00,它无法确定是否使用 1 页启用了 javascript

您可以使用 javascript 设置具有某个值的隐藏变量,当页面提交时,您可以检查它并确定是否启用了 javascript.. 但这需要 1 个请求/响应周期,可能您可以有一个临时页面将请求转发到预期的页面(使用我上面讨论的隐藏变量)。

于 2012-01-10T04:43:08.573 回答
0

为什么不在页面加载时让您的 javascript 代码加载一个微小的 html/image/etc 片段。如果启用了 javascript,您可以看到该文件已被请求。如果它被禁用,则不会请求该文件。

于 2012-01-10T05:12:25.767 回答