表單是最常見的html元素,作用是向服務器提交數據。其中有一個屬性target,深入理解之后,對頁面的形成有幫助。下面詳細分析。
一 表單提交到了哪里?
這 似乎是個無知的問題,我們都知道表單提交到服務器,java,php,asp等服務器,然后由服務器去讀。那么之后呢,服務器總要返回點什么吧,要么返回 一個xml或json數據,要么返回一個頁面,要么返回一個頁面片段,但是返回到哪里了,這些結果在哪里展示?其實這就是常常被忽略的一個問題,尤其是 ajax用多了,覺得無刷新是理所當然的。在默認情況下,在什么頁面提交的,就會將返回的數據(json或頁面或頁面片段)給這個頁面。這里的頁面指一個 框架,帶有<html></html>結構的html頁。
這樣一來,當在A頁面提交了一個表單,服務器返回了 一個信息,表示成功了,此時,返回的數據會給A頁面,於是,A頁面就"刷新"了一次。2005年,出現了異步刷新ajax。這樣就可以“局部刷新”了,向 服務器提交數據時,不用通過表單了,可以通過瀏覽器對象來提交,服務器返回數據到該瀏覽器對象,這樣便可以實現“局部刷新”了。
但是ajax有個致命問題,不能提交文件。怎么辦?
二 文件還得用表單來提交
為了克服ajax不能提交文件的問題,我們又想起了表單。當表單的enctype=multipart/form-data時,就可以上傳文件了。可是這樣又需要整個頁面刷新,問題來了,兩個難以同時滿足。
方法總是有的。於是出現了通過設置表單的target=xxxxIframe的方法。這樣意味着表單提交到一個無關的頁面,服務器返回時也返回到這個頁 面,再在這個無關的頁面進行js操作,改變需要更新的頁面區域。而整個表單提交過程中,無關頁面都是隱藏的,是個幕后推手。這就是 target=xxxxIframe的作用。
三 target屬性
target完整的屬性可能值是:
_self:默認值,在原頁面打開。
_blank:在新窗口打開。
_parent:在父窗口打開。
_top:在頂級窗口打開。
_frameName(xxxxIframe):在指定窗口打開。
方勁松 南京焦點科技 寫於鼓樓清涼山 2012.8.12
