仿iframe效果Aajx文件上傳實(shí)例
前段時(shí)間在解決ajax上傳文件時(shí)折騰了好一陣。直接用$.post上傳文本信息肯定是沒(méi)有問(wèn)題的。但是$.post直接上傳圖片是不可行的。
后來(lái)看到網(wǎng)上的一些解決方案,有現(xiàn)成的ajax上傳文件的封裝的方法也有利用flash的。flash確實(shí)是個(gè)好方法 但是不是每個(gè)人都會(huì)flash的而且下載下來(lái)現(xiàn)成的方法要做修改也不是件易事,且文件相對(duì)較大。最后只好模擬iframe來(lái)實(shí)現(xiàn)。發(fā)現(xiàn)相當(dāng)?shù)暮?jiǎn)單。
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>
這里是重點(diǎn)。要上傳文件enctype這個(gè)屬性不可少,target的值改為iframe的name的值。
下面寫一下js代碼,我是用的jQuery所以在用的時(shí)候載入jquery的庫(kù)是必不可少的。
$(function(){
if($.browser.msie){
window.form1.submit();}else{
$("#form1").submit();}
});
這里是做了一個(gè)瀏覽器版本的判斷,因?yàn)镮E是不太符合規(guī)范的一個(gè)瀏覽器,尤其是IE6。IE6是不直接支持$("#idName").submit();這種方式的。
服務(wù)端如下,還得返回一個(gè)值,直接submit是無(wú)法返回值的
public void Upload()
{
HttpPostedBase ff=Request.Files["document"];//這里是獲取上傳的文件流,也可以用索引值來(lái)表示如果是多個(gè)文件的話
string fileName=System.DateTime.Now+ff.FileName.ToString(); //這里取出來(lái)的文件名是沒(méi)有后綴的,所以要保存的話還需要取出文件拓展名。這里就不寫過(guò)細(xì),只是為描述這樣一個(gè)思路。
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();這個(gè)是JS調(diào)用父頁(yè)的方法。因?yàn)楝F(xiàn)在模擬一個(gè)iframe上傳文件,這個(gè)iframe的作用就是一個(gè)中間站的作用。在父頁(yè)點(diǎn)擊上傳后通過(guò)target會(huì)將頁(yè)面文檔流傳入iframe中再上傳服務(wù)端作處理。服務(wù)端有響應(yīng)之后然后再在iframe里面顯示出來(lái),而不是直接在父頁(yè)面顯示出結(jié)果。這里可能就是一個(gè)alert()彈出一個(gè)對(duì)話框提示一下,如果是這樣那么不調(diào)父頁(yè)方法也行。如果想把這提示的內(nèi)容豐富一點(diǎn)比如彈出個(gè)類似人人網(wǎng)的藍(lán)色的對(duì)話框之類的。
}
}
模擬iframe其實(shí)是頁(yè)面局部更新,但是頁(yè)面中的這個(gè)iframe沒(méi)有內(nèi)容而且還是不顯示的,所以它刷新了完全不會(huì)影響到整個(gè)頁(yè)面。
以上這篇仿iframe效果Aajx文件上傳實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
jquery EasyUI的formatter格式化函數(shù)代碼
以下實(shí)例格式化數(shù)據(jù)表格中的一列。如果金額小于20時(shí)使用自定義的格式器將文本變成紅色。2011-01-01
jQuery事件綁定.on()簡(jiǎn)要概述及應(yīng)用
前幾天看到事件委托的時(shí)候,關(guān)于live()方法講的不是很詳細(xì),就去搜了一下關(guān)于live()和delegate()的,最后看源碼發(fā)現(xiàn)bind()和delegate()都是由on()實(shí)現(xiàn)的,感興趣的朋友可以了解下,或許本文對(duì)你有所幫助2013-02-02
jQuery自動(dòng)切換/點(diǎn)擊切換選項(xiàng)卡效果的小例子
我們看到很多網(wǎng)站會(huì)有有錯(cuò)誤404頁(yè)面,當(dāng)頁(yè)面不存存時(shí)就會(huì)提示,然后過(guò)幾秒就會(huì)自動(dòng)跳到首頁(yè)了,下面我來(lái)給大家舉一個(gè)404錯(cuò)誤頁(yè)面跳到首頁(yè)實(shí)例,有需要的朋友可以參考一下2013-08-08
jquery實(shí)現(xiàn)去除重復(fù)字符串的方法小結(jié)
這篇文章主要介紹了jquery實(shí)現(xiàn)去除重復(fù)字符串的方法,結(jié)合實(shí)例形式總結(jié)了三種常用的字符串去重操作技巧,需要的朋友可以參考下2016-04-04
jQuery UI工具提示框部件Tooltip Widget
這篇文章介紹了jQuery UI工具提示框部件Tooltip Widget,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
jQuery實(shí)現(xiàn)的手機(jī)發(fā)送驗(yàn)證碼倒計(jì)時(shí)效果代碼分享
這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)手機(jī)注冊(cè)發(fā)送驗(yàn)證碼倒計(jì)時(shí)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-08-08
jQuery實(shí)現(xiàn)的簡(jiǎn)單前端搜索功能示例
這篇文章主要介紹了jQuery實(shí)現(xiàn)的簡(jiǎn)單前端搜索功能,涉及jQuery事件響應(yīng)與頁(yè)面元素遍歷、匹配、動(dòng)態(tài)設(shè)置等相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
jQuery+PHP實(shí)現(xiàn)可編輯表格字段內(nèi)容并實(shí)時(shí)保存
在本例中,我們會(huì)通過(guò)jQuery實(shí)現(xiàn)單擊將一個(gè)文本信息變?yōu)榭删庉嫷谋韱危憧梢詫?duì)文本內(nèi)容進(jìn)行編輯,然后點(diǎn)擊“確定”按鈕,新的內(nèi)容將發(fā)送到后臺(tái)PHP程序處理,并保存到數(shù)據(jù)庫(kù);當(dāng)點(diǎn)擊“取消”按鈕,則頁(yè)面恢復(fù)到初始狀態(tài),需要的朋友可以參考下2015-10-10
jQuery模擬實(shí)現(xiàn)天貓購(gòu)物車動(dòng)畫效果實(shí)例代碼
最近在項(xiàng)目開發(fā)中遇到這樣的需求,點(diǎn)擊購(gòu)買按鈕,模擬拋物線將物品彈到購(gòu)物車?yán)?,?gòu)物車添加物品后,顯示+1動(dòng)畫。效果非常棒,接下來(lái)小編把實(shí)例代碼分享到腳本之家平臺(tái),需要的的朋友參考下吧2017-05-05

