2011-01-28 68 views
2

是否可以使用AJAX加載完整網頁,我將如何處理它?使用AJAX加載網頁

我在想,我可以像平常一樣創建單獨的頁面,然後使用AJAX以某種方式獲取該頁面,並將其呈現在用戶當前所在的位置。這是否是正確的假設?

基本上我打算做一個更加動態的網站,所以當用戶點擊一個選項時,它會向下滾動並顯示請求的信息,沒有明顯的頁面重定向。

任何建議將是偉大的。

謝謝。

+2

可能的,但inadvi黑貂 - 如果你重寫整個頁面,你並沒有利用任何真正的好處。你的使用案例並沒有讓你聽起來像你需要這樣做,只是修改了AJAX頁面的SOP部分。 – annakata 2011-01-28 11:50:37

回答

3

jQuery的.load(URL)方法加載HTML直接進入的元素。因此,如果您將每個<一個>標記更改爲頂級元素上的.load(),則可以執行此操作。這有點像使用框架,但是定位DIV而不是框架。

當然它會破壞很多的東西,像後退按鈕,表格,以便搬運等等等等,除非你把大量的工作英寸

,就像醫生告訴時候誰「這傷害我這樣做的時候「回答」那麼不要那麼做「,答案可能是」不這樣做「。

+0

是的可用性問題是我試圖牢記的事情之一。指出後退按鈕很好。 – diggersworld 2011-01-28 12:27:22

1

一種可能的方式是獲取HTML,然後將其寫入到一個div

+0

這也是我可能會這樣做的方式。 – Olical 2011-01-28 12:18:48

+0

請提供進一步的解釋或可能爲像我這樣的n00bs的例子。 – chharvey 2012-02-03 03:44:56

0

是的,這是可能的。您可以從純JavaScript中創建一個頁面/網站,從Web服務或類似的處理程序中獲取所有元素。儘管如此,這仍然是一場噩夢,並且根據您的需求遇到各種各樣的問題。我將它作爲學習jQuery,AJAX和其他一些事情的練習。我發現表單提交變得棘手。雖然數據通過AJAX發佈到Web服務中,但管理頁面狀態變得非常複雜,並且隨着網站需求的增長,它只會變得噩夢。

我還發現,爲了實現這個目標,您必須選擇在轉換期間刷新整個界面,或者只是更改部分。刷新整個界面非常麻煩,對於「快速」用戶來說,AJAX可能無法跟上。它也會導致Web服務請求發生衝突。如果您的頁面有4個獨立的部分正在更新,那麼Web服務請求會在中間「丟失」並不常見,而不會更新。

所以你的問題的答案是「是」。仔細閱讀你的問題,我會將你的請求範圍保留在單獨的顯示頁面上,而不需要太多的功能。保持它越簡單,維護和使用就越容易。

0

我知道這是一箇舊帖子,但這是一個很好的小腳本,可以完成這項工作。它可以將ajax內容加載到現有的非Ajax站點。需要jQuery。

腳本

<script type="text/javascript"> 
//Your navigation bar, can be "document" or body 
var $navigation = $(".side"); 

//Your main content that will be replaces 
var body = ".page"; 
var $body = $(body); 

$navigation.delegate("a", "click", function() { 
    window.location.hash = $(this).attr("href"); 
    return false; 
}); 

$(window).bind('hashchange', function() { 
    var newHash = window.location.hash.substring(1); 
    if(newHash) { 
     $body.fadeOut(200, function() { 
      $body.hide().load(newHash + " " + body, function() { 
       $body.fadeIn(200, function() { 
       }); 
      }); 
     }); 
    }; 
}); 

$(window).trigger('hashchange'); 
</script> 

詳細

所有在$導航鏈接將有一個click事件添加到他們,將更新窗口的URL哈希值。該窗口正在監聽散列更改,並將使用散列值發出AJAX請求來重新加載$ ​​body html。

優勢

  • 歷史(後退&前進)導航將工作:
  • 該站點將使用支持JavaScript和不瀏覽器的瀏覽器工作;
  • 如果你複製過去的URL,腳本將加載正確的頁面;
  • 因爲我們使用的是委託功能,它們通過了ajax負荷的結果添加的任何鏈接也將有click事件添加到他們

缺點

  • 您不能再使用錨在您的網站

欲瞭解更多信息和例子中看到:http://css-tricks.com/video-screencasts/85-best-practices-dynamic-content/