2012-01-10 42 views
0

我有一個網頁,其中一部分頁面通過AJAX加載, ,但我也希望在JavaScript未啓用時使其工作。查詢JSP是否在JSP中啓用/禁用

所以,我寫的代碼爲

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

其中

fetchCitiesAndDisplay()

是一個JavaScript方法,將獲得的內容(在城市執行代碼.java)並顯示它。

Cities.java

是一個Java類,它會收集數據庫中的城市和生成要顯示HTML內容。

當JavaScript關閉時,一切正常,因爲ajax調用不會被執行,只有Cities.getHtml()會被調用一次。

但是,當啓用JavaScript時,Ajax調用也會被執行,並且Cities.getHtml()也被調用。即使 - 顯示看起來是正確的,因爲標記,Cities.java將爲此調用兩次數據,它吃了很多時間...

如何解決這個問題?

+0

http://stackoverflow.com/questions/121203/how-to-detect-if-javascript-is-disabled - 看看這是否有幫助。 – 2012-01-10 01:50:05

+0

沒有srikanth,它不能解決我的問題... – amithgc 2012-01-10 01:55:20

回答

1

我想知道如果也許你不明白<noscript>如何工作。它不會在你的服務器端模板中發揮作用,所以無論你放在那裏的服務器端邏輯總是會執行,無論JavaScript是否最終在瀏覽器中啓用。

因此,這對我來說並沒有什麼意義,因爲無論javascript處於打開狀態還是關閉狀態,總會生成<noscript>以內的HTML。它將始終在頁面中。所以,如果它始終在頁面中,那麼爲什麼在javascript打開時通過ajax獲取?

+0

我的主要目標是通過AJAX獲取它,使網頁渲染速度更快......但是如果JS被禁用,那麼我只想直接獲取並顯示它調用out.print(Cities.getHtml()); – amithgc 2012-01-10 01:57:33

+0

你有沒有這樣做。它總是調用Cities.getHTML()中的服務器端代碼。當javascript爲1時,只需在view/source中查看生成的頁面,您將在'

+0

0

我有@ jfriend00,同意其無法確定如果JavaScript使用1頁

您可以使用JavaScript來設置一個隱藏的變量與一些值,當頁面提交您可以檢查它啓用並確定是否啓用JavaScript ..但這需要1個請求/響應週期,也許你可以有一個臨時頁面,將請求轉發到預期的頁面(帶有上面討論的隱藏變量)。

0

爲什麼不讓你的javascript代碼在加載頁面時加載一個小的html/image/etc代碼片段。如果啓用了JavaScript,您可以看到該文件被請求。如果它被禁用,則不會有該文件的請求。