AJAX與雙FORM提交

現在是AJAX橫行的時代,也許已經很少有人用隱藏form提交來實現不刷新頁面更新了。

在AJAX以前,一般都是用隱藏form提交來實現頁面不刷新提交數據,雖然那時候我也常用xmlhttp提交來實現,不過現在ajax概念流行,不用一下總好像你跟不上時代似的,老總會問“你用了ajax了沒有”。

現在來對比一下ajax與隱藏form提交的利與弊。

1.隱藏form提交,更新數據完成後,需要轉到一個空白頁面再對原頁面進行提交後處理;ajax則不用,可以直接返回原頁面進行提交後的處理。可見ajax可以比隱藏form提交少增加一個頁面。

2.ajax出於安全性考慮,不能對文件進行操作,所以就不能通過ajax來實現文件上傳,而通過隱藏form提交則可以實現這個功能,所以這就是目前用隱藏form提交的主要用途。

現在接下來講述如何通過隱藏form來實現文件上傳

 1)首先定義一個用於填寫表單內容的form

<form name="form1"></form>

2)接着定義一個用於提交的form

<form name="form2" target="myIframe">  //用於指定提交返回的頁面顯示在這個隱藏的iframe中

<iframe name="myIframe" style="display:none"></iframe>  //用於存放提交返回後的空白頁面

<div id="formInner" style="display:none"></div>  //用於獲取form1的html內容,獲得form1的表單元素

</form>

3)在form1提交時,進行如下javascript處理

var formInner= document.getElementById("formInner");
   formInner.innerHTML = form1.innerHTML;  //複製form1的html代碼
   form2.action = form1.action;
   form2.submit();

4)提交後,進入後臺處理,後臺處理完成後,需要返回一個空白頁面blank.jsp,這個頁面是在隱藏的iframe中生成的,所以可以通過parent對象對原頁面進行操作。

比如原頁面定義了一個updatePageFromSubmit(),則在blank.jsp頁面中可以通過parent.updatePageFromSubmit()來調用進行提交返回後 的處理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章