一,無刷新頁面提交jquery
1.form表單在提交後會自動跳轉頁面,爲了不跳轉,實現無刷新頁面提交,能夠經過一個隱藏的iframe實現,把form表單的target設置爲iframe的name名稱,
form提交目標位當前頁面iframe則不會刷新頁面ajax
*注:使用form表單進行上傳文件須要爲form添加enctype="multipart/form-data" 屬性,除此以外還須要將表單的提交方法改爲post,
以下 method="post", input type的類型須要設置爲file服務器
enctype 屬性規定在將表單數據發送到服務器以前如何對其進行編碼,在使用文件上傳控件時,必須加入該屬性。框架
<form action="/admin/updateAdvertDetail" method="post" target="display_none" enctype="multipart/form-data"onsubmit="return check()">
<input type="file" name="name"/>
<input type="text" name="name"/ class="txt">
<input type="submit" value="提交"/>
</form>
<iframe name="display_none" style="display:none"></iframe>
*注:在我使用form表單提交跳轉空iframe框架的時候,出現了文件傳輸失敗的狀況,並且這種傳輸失敗的狀況很偶然(注:文件上傳大小沒有限制),下圖是,傳輸失敗時的截圖,圖片顯示有時是大文件沒法上傳,有時候小文件沒法上傳,我一度覺得是前臺js代碼問題,找了一圈下來也沒找到問題,爲了解決這個,使用ajaxSubmit()上傳,但多是由於我項目中引用的js文件與它衝突,一直顯示提交失敗,只能先放棄這個方法。函數
最後發現原來是由於後臺沒有對文件傳輸後進行操做,最後進行重定向返回當前頁面,才把問題解決。post
二,實現form的ajax提交(表單提交ajaxForm和ajaxSubmit的用法和區別)編碼
1.首先要下載jquery.form.js,這個網上有,你們自行下載url
2.這個插件的主要用途就是支持ajax表單提交和ajax文件上傳。spa
3.兩個主要的API:ajaxForm() ajaxSubmit()。插件
4.ajaxForm和ajaxSubmit均可以接收0或1個參數,該參數能夠是一個變量、一個對象或回調函數,這個對象主要有如下參數:
var object= {
url:url, //form提交數據的地址
type:type, //form提交的方式(method:post/get)
target:target, //服務器返回的響應數據顯示的元素(Id)號
beforeSerialize:function(){} //序列化提交數據以前的回調函數
beforeSubmit:function(){}, //提交前執行的回調函數
success:function(){}, //提交成功後執行的回調函數
error:function(){}, //提交失敗執行的函數
dataType:null, //服務器返回數據類型
clearForm:true, //提交成功後是否清空表單中的字段值
restForm:true, //提交成功後是否重置表單中的字段值,即恢復到頁面加載時的狀態
timeout:6000 //設置請求時間,超過該時間後,自動退出請求,單位(毫秒)。
};
$(function(){
$("form").ajaxForm(object);
})