仿iframe效果Aajx文件上傳實例
前段時間在解決ajax上傳文件時折騰了好一陣。直接用$.post上傳文本信息肯定是沒有問題的。但是$.post直接上傳圖片是不可行的。
后來看到網(wǎng)上的一些解決方案,有現(xiàn)成的ajax上傳文件的封裝的方法也有利用flash的。flash確實是個好方法 但是不是每個人都會flash的而且下載下來現(xiàn)成的方法要做修改也不是件易事,且文件相對較大。最后只好模擬iframe來實現(xiàn)。發(fā)現(xiàn)相當?shù)暮唵巍?/p>
html:
<iframe name="ajaxUpload" style="display:none"></iframe>
<form name="from1" id="from1" method="post" action="url" enctype="multipart/form-data"target="ajaxUpload">
<table>
<tr>
<td>附件:</td>
<td><input type="file" id="document" name="document"/></td>
</tr>
</table>
</form>
這里是重點。要上傳文件enctype這個屬性不可少,target的值改為iframe的name的值。
下面寫一下js代碼,我是用的jQuery所以在用的時候載入jquery的庫是必不可少的。
$(function(){
if($.browser.msie){
window.form1.submit();}else{
$("#form1").submit();}
});
這里是做了一個瀏覽器版本的判斷,因為IE是不太符合規(guī)范的一個瀏覽器,尤其是IE6。IE6是不直接支持$("#idName").submit();這種方式的。
服務端如下,還得返回一個值,直接submit是無法返回值的
public void Upload()
{
HttpPostedBase ff=Request.Files["document"];//這里是獲取上傳的文件流,也可以用索引值來表示如果是多個文件的話
string fileName=System.DateTime.Now+ff.FileName.ToString(); //這里取出來的文件名是沒有后綴的,所以要保存的話還需要取出文件拓展名。這里就不寫過細,只是為描述這樣一個思路。
try
{
SaveAs(documentPath+fileName+extendtionName);
Response.Write("<script type='text/javascript' type='language'>parent.window.callBackMethod('上傳成功');</scrpt>");
}
catch
{
Response.Write("<script type='text/javascript' type='language'>parent.window.callBackMethod('上傳失敗');</scrpt>"); //parent.window.methodName();這個是JS調(diào)用父頁的方法。因為現(xiàn)在模擬一個iframe上傳文件,這個iframe的作用就是一個中間站的作用。在父頁點擊上傳后通過target會將頁面文檔流傳入iframe中再上傳服務端作處理。服務端有響應之后然后再在iframe里面顯示出來,而不是直接在父頁面顯示出結果。這里可能就是一個alert()彈出一個對話框提示一下,如果是這樣那么不調(diào)父頁方法也行。如果想把這提示的內(nèi)容豐富一點比如彈出個類似人人網(wǎng)的藍色的對話框之類的。
}
}
模擬iframe其實是頁面局部更新,但是頁面中的這個iframe沒有內(nèi)容而且還是不顯示的,所以它刷新了完全不會影響到整個頁面。
以上這篇仿iframe效果Aajx文件上傳實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
jquery EasyUI的formatter格式化函數(shù)代碼
以下實例格式化數(shù)據(jù)表格中的一列。如果金額小于20時使用自定義的格式器將文本變成紅色。2011-01-01
jQuery UI工具提示框部件Tooltip Widget
這篇文章介紹了jQuery UI工具提示框部件Tooltip Widget,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-06-06
jQuery實現(xiàn)的手機發(fā)送驗證碼倒計時效果代碼分享
這篇文章主要為大家詳細介紹了jQuery實現(xiàn)手機注冊發(fā)送驗證碼倒計時功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2015-08-08
jQuery+PHP實現(xiàn)可編輯表格字段內(nèi)容并實時保存
在本例中,我們會通過jQuery實現(xiàn)單擊將一個文本信息變?yōu)榭删庉嫷谋韱?,你可以對文本?nèi)容進行編輯,然后點擊“確定”按鈕,新的內(nèi)容將發(fā)送到后臺PHP程序處理,并保存到數(shù)據(jù)庫;當點擊“取消”按鈕,則頁面恢復到初始狀態(tài),需要的朋友可以參考下2015-10-10

