我對PHP/MYSQL競技場有點新,並且有一個想法是能夠通過使用隱藏的Iframe在後臺運行PHP頁面(iframe)而不必離開當前頁?使用隱藏的iframe來運行PHP腳本 - 很好嗎?壞?意見呢?
好嗎?壞?通用實踐?意見?
我對PHP/MYSQL競技場有點新,並且有一個想法是能夠通過使用隱藏的Iframe在後臺運行PHP頁面(iframe)而不必離開當前頁?使用隱藏的iframe來運行PHP腳本 - 很好嗎?壞?意見呢?
好嗎?壞?通用實踐?意見?
這是大多數時候不好,但有時不可避免。
這樣做的常見做法是使用AJAX,它很常見,甚至W3School也有一個關於它的article。
使用AJAX優於IFrame的優點是AJAX可以是多線程的。您可以連續發送多個請求,這對使用IFrames實施起來更麻煩。此外,AJAX支持狀態代碼,因此您可以檢測錯誤,其中IFrame必須依賴於抓取頁面的HTML,並希望通過查看錯誤頁面的HTML代碼來確定正確的狀態。
AJAX更多的JavaScript慣用和事件驅動,這意味着您的回調會在有迴應時自動收到通知。使用IFrame,您必須setTimeout()
並繼續輪詢IFrame以獲得響應,該響應可能很容易中斷。
如果您想在不離開當前頁面的情況下上傳文件,IFrame有時是不可避免的。但是,這可能不是你的範圍,因爲你只提到數據庫交互。
學習使用XMLHttpRequest,這是AJAX的基礎。熟悉這一點之後,試着通過使用JavaScript框架(如jQuery,Dojo等)使其變得有趣。
這通常使用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!」 :)也可以跳過所有的痛苦和痛苦,並以正確的方式開始
我猜應該發生什麼事,當你的數據庫做了什麼,對吧?即你的頁面應該給出某種反饋,也許更新一個數字或者一些文本。
所以你打算使用JavaScript。在這種情況下,跳過iframe併發送AJAX請求。
在採用XMLHttpRequest API之前使用了隱藏的iframe方法(也許您已經聽說過它阿賈克斯)。
幾年前,我在使用rslite以前的實現,但現在這種技術對我來說只是一個歷史價值。
您可以使用Ajax技術在普通的JavaScript在http://www.xul.fr/en-xml-ajax.html,或者更好的規劃路線,您可以選擇使用公共庫,jquery或mootools等,以應對不同的瀏覽器不同的實現。
有沒有必要繼續用'setTimeout()'輪詢iframe。您可以簡單地在iframe中發送JavaScript代碼,該代碼可以在加載時執行回調。 – 2010-05-31 06:40:02