Ajax提交form表單內容和文件(jQuery.form.js)

jQuery官網是這樣介紹form.js A simple way to AJAX-ify any form on your page; with file upload and progress support.
簡單來講就是用ajax提交form表單(含file內容)內容

form.js提供的API方法

API API描述 參數
ajaxForm 增長全部須要的事件監聽器,爲ajax提交表單作準備。ajaxForm並不能提交表單。在document的ready函數中,使用ajaxForm來爲ajax提交表單進行準備。 接受0個或1個參數。參數能夠是一個回調函數,也能夠是一個Options對象。
ajaxSubmit 使用ajax提交表單。 接受0個或1個參數。參數能夠是一個回調函數,也能夠是一個Options對象。
formSerialize 將表單串行化(或序列化)爲一個查詢字符串。這個方法將返回如下格式的字符串:name1=value1&name2=value2。
fieldSerialize 將表單的字段元素串行化(或序列化)爲一個查詢字符串。當只有部分表單字段須要進行串行化(或序列化)時,使用這個就很方便了。返回如下格式的字符串:name=value1&name2=value2。
fieldValue 返回匹配插入數組中的表單元素值。該方法以數組的形式返回數據。若是元素值被斷定可能無效,則數組爲空。
resetForm 將表單恢復到初始狀態。
clearForm 清除表單元素。該方法將全部的text、password、textarea置空,清除select元素中的選定,以及全部radio按鈕和checkbox按鈕重置爲非選定狀態。
clearFields 清除字段元素。只有部分表單元素須要清除時方便使用。










 

 

 

ajaxForm和ajaxSubmit都支持Options對象參數php

target 指明頁面中由服務器響應進行更新的元素。元素的值可能被指定爲一個jQuery選擇器字符串、一個jquery對象、一個DOM元素。 默認值:null
url 指定提交表單數據的URL。 默認值:表單的action屬性值
type 指定提交表單數據的方法(method):「GET」或「POST」。 默認值:GET
beforeSubmit 表單提交前被調用的回調函數。若是回調函數返回false表單將不被提交。回調函數帶三個調用參數:數組形式的表單數據,jQuery表單對象,以及傳入ajaxForm/ajaxSubmit中的Options對象。 默認值:null
success 表單成功提交後調用的回調函數。而後dataType選項值決定傳回responseText仍是responseXML的值。 默認值:null
dataType 返回的數據類型:null、"xml"、"script"、"json"其中之一。 默認值:null
resetForm 表示若是表單提交成功是否進行重置。 默認值:null
clearForm 表示若是表單提交成功是否清除表單數據。 默認值:null
timeout 限制請求的時間,當請求時間大於設置時間後,跳出請求  

 

 

 

 

 

 

 

 

 

 


form表單代碼jquery

<form id="form-js-demo" action="test.php" method="post"> <p>Name: <input type="text" name="name" value="name"/></p> <p>password: <input type="text" name="password" value="password"/></p> <p> <input type="checkbox" name="letter" value="A">A <input type="checkbox" name="letter" value="B">B <input type="checkbox" name="letter" value="C">C </p> <p> <input type="radio" name="size" value="S">S <input type="radio" name="size" value="M">M <input type="radio" name="size" value="L">L </p> <p>File: <input type="file" name="file"/></p> <p>Comment: <textarea name="comment">comment</textarea></p> <p> <button type="submit" id="submit">Submit</button> <button type="button" id="serialize">serialize</button> <button type="submit" id="options">Options Submit</button> </p> </form> <div class="data-show"></div> <script src="jquery-3.3.1.min.js"></script> <script src="jquery.form.js"></script>

 

提交時使用下面三處代碼任意一處皆可,提交後臺數據和form普通提交後同樣,該怎樣處理就怎樣處理ajax

#一、ajaxForm   提交json

 

$('#form-js-demo').ajaxForm(function (obj) { console.log(obj);//obj 後臺處理數據的返回值 });

#二、ajaxSubmit   提交數組

 

 $('#form-js-demo').submit(function () { $('#form-js-demo').ajaxSubmit(function (obj) { //obj 後臺處理數據的返回值  console.log(obj); }); return false;//若不return false,會跳轉提交(重複提交)。 });

#三、options 參數提交服務器

 

 $('#options').click(function () { var options = { url: 'test2.php', //form提交路由,form表單和options均可設置,兩處都設置了則以form中設置爲準 type: 'get', //form提交方式,form表單和options均可設置,兩處都設置了則以form中設置爲準(method:post/get) target: '.div-display', //服務器返回的數據顯示在元素(id或class)中顯示(後臺返回數據原樣顯示在.div-display中) beforeSubmit: function (obj) { //obj form提交數據,以對像存儲  console.log(obj); //return false;//設置false 則不會提交  }, //提交前回調函數 success: function (obj) { //obj 後臺返回數據 若options設置了 target 項 obj 返回 0  console.log(obj); }, //提交成功後回調函數 dataType: null, //服務器返回數據類型 clearForm: true, //提交成功後是否清空表單中的字段值 restForm: true, //提交成功後是否重置表單中的字段值,即恢復到頁面加載時的狀態 timeout: 6000 //設置請求時間,超過該時間後,自動退出請求,單位(毫秒)。  }; $('#form-js-demo').ajaxForm(options);

 

form.js 表單序列化方法測試和對比
$("#serialize").click(function () { //jquery 自帶表單序列化方法 會忽略 input[type="file"] 內容
    console.log($('#form-js-demo').serialize()); //name=name&password=password&letter=B&letter=C&size=M&comment=comment


    //form.js 表單序列化方法 包含 input[type="file"] 內容
    console.log($('#form-js-demo').formSerialize()); //name=name&password=password&letter=B&letter=C&size=M&file=&comment=comment


    //form.js 表單序列化方法 只序列input[type="text"]內容
    console.log($('#form-js-demo input[type="text"]').fieldSerialize()); //name=name&password=password
  });
相關文章
相關標籤/搜索