2009-12-04 74 views
3

我是新來的ajax,我想知道我們是否可以加載一個完整的新頁面,而不僅僅是使用ajax的一部分。請給出一個小例子腳本來了解這是否可行。在這裏,我試圖只顯示一個網址給用戶,而當他點擊頁面上的任何鏈接時,我從一個頁面切換到另一個頁面。使用ajax加載新頁面

+0

效果往往這種請求如果我們知道需要它的原因,就更容易回答。這些信息可能會揭示其他方法,或者可能會清楚地表明你想要的東西是不可能的。至少,你可能會得到迴應,說明這是一個壞主意的原因,這可能爲你節省很多麻煩。 –

回答

0

當您發出AJAX請求時,請求會關閉,併爲您提供所請求的URL的內容。從技術上講,你可以對內容(可以是HTML)做任何你喜歡的事情,你可以用它替換DOM中的任何元素。但是要小心地替換頁面上的所有內容,你很可能只是想要替換標籤內的內容。

0

如果你想要做的是顯示多個頁面的一個URL,AJAX是矯枉過正。爲什麼不使用IFRAME?

+0

您能否爲我提供此代碼示例 – Srk

11

您可以爲新的一頁課程的要求,並通過body.innerHTML = ajax.responseText;

我會強烈反對這雖然在這篇文章中概述的原因加載:Why not just using ajax for Page Requests to load the page content?

整體前提真的是與 AJAX你不需要重新加載整個頁面 來更新該網頁的一小部分 。這節省了 的帶寬,並且通常比重新加載整個頁面快得多 。

但是,如果您使用AJAX加載整個頁面 這實際上是 適得其反。您必須編寫 自定義例程來處理AJAX數據的 回調。其整個 很多額外的工作,爲小到沒有 性能增加。

有關使用AJAX的一般規則:如果 您的更新>您的頁面的50%,只需 重新加載,否則使用AJAX。

您不僅需要請求新頁面,還需要確保刪除當前頁面上的舊樣式並且不會干擾新頁面。 Theres與您試圖做什麼有關的各種問題。這是可能的,但我建議不要這樣做。

編輯:其實你也許可以只是做document.write(ajax.responseText)雖然還是不建議它應該採取文檔中護理覆蓋一切,包括CSS樣式等。

0

如果您的頁面不確定是否期待返回錯誤被插入頁面或「新」提交確認頁面,這可能很有用。當你想在提交servlet(或其他)前面加一個驗證servlet(或其他)時,可以使用它。如果頁面總是碰到驗證servlet,則隱藏實際執行數據更新的提交servlet。在驗證通過的情況下,轉發到提交servlet。用戶從不知道後臺發生了什麼。

當頁面得到響應時,您可以查看響應文本的第一部分並確定它是否有由服務器設置的關鍵字,這意味着這是一個新頁面。從文本中刪除關鍵字,並做document.write(ajax.responseText);如前所述。否則,將響應文本插入到errorBox div中並讓用戶重試提交。

1

當你與處理AJAX請求簡單地使用這個JS完成行:

window.location.replace('<URL of the new page>'); 

這正是加載新的頁面通過

<a href="<URL of the new page>">...</a>. 
+3

當您完成處理AJAX請求時,只需使用以下JS行: window.location.replace('新頁面的URL'); 這正是使用href =「新頁面的URL」加載新頁面的效果.../a。 – Tijger