2010-05-31 20 views

回答

3

這是大多數時候不好,但有時不可避免。

這樣做的常見做法是使用AJAX,它很常見,甚至W3School也有一個關於它的article

使用AJAX優於IFrame的優點是AJAX可以是多線程的。您可以連續發送多個請求,這對使用IFrames實施起來更麻煩。此外,AJAX支持狀態代碼,因此您可以檢測錯誤,其中IFrame必須依賴於抓取頁面的HTML,並希望通過查看錯誤頁面的HTML代碼來確定正確的狀態。

AJAX更多的JavaScript慣用和事件驅動,這意味着您的回調會在有迴應時自動收到通知。使用IFrame,您必須setTimeout()並繼續輪詢IFrame以獲得響應,該響應可能很容易中斷。

如果您想在不離開當前頁面的情況下上傳文件,IFrame有時是不可避免的。但是,這可能不是你的範圍,因爲你只提到數據庫交互。

學習使用XMLHttpRequest,這是AJAX的基礎。熟悉這一點之後,試着通過使用JavaScript框架(如jQuery,Dojo等)使其變得有趣。

+0

有沒有必要繼續用'setTimeout()'輪詢iframe。您可以簡單地在iframe中發送JavaScript代碼,該代碼可以在加載時執行回調。 – 2010-05-31 06:40:02

0

這通常使用AJAX完成。 jQuery javascript庫使這個很容易

我不認爲使用iframe是一個很好的方法來實現這一點。您仍然需要啓用javascript才能更改iframe的位置,並且如果有javascript,爲什麼不使用AJAX?

如果您使用iframe,您將無法以任何有意義的方式從服務器接收響應,而無需執行大量解決方法。例如 - 使用jQuery,你可以提交一些信息給服務器與一個函數調用,並請求完成那麼當,回調函數可以從服務器響應信息中調用:

$.post("ajax.php", { var1: "data", var2: "moredata" }, 
    function(data){ 
    alert("Server says: " + data); 
    }); 

在這例如,請求完成時,出現一個警報框,其輸出爲ajax.php

對於iframe,您可能需要將iframe的位置更改爲server.com/iframe.php?var=data&var2=moredata&var3=moredata,然後等待一小段時間,然後獲取iframe的內容(如果可能的話),然後執行相關操作。

更不用說,當您遇到問題時,您可能會要求您提供有關SO的建議。每次人們可能會說「放棄並使用jQuery!」 :)也可以跳過所有的痛苦和痛苦,並以正確的方式開始

0

我猜應該發生什麼事,當你的數據庫做了什麼,對吧?即你的頁面應該給出某種反饋,也許更新一個數字或者一些文本。

所以你打算使用JavaScript。在這種情況下,跳過iframe併發送AJAX請求。

0

在採用XMLHttpRequest API之前使用了隱藏的iframe方法(也許您已經聽說過它阿賈克斯)。

幾年前,我在使用rslite以前的實現,但現在這種技術對我來說只是一個歷史價值。

您可以使用Ajax技術在普通的JavaScript在http://www.xul.fr/en-xml-ajax.html,或者更好的規劃路線,您可以選擇使用公共庫,jquerymootools等,以應對不同的瀏覽器不同的實現。