jQuery Form插件是一個非常流行的Ajax上傳插件,它可以讓我們輕松地處理表單提交的數(shù)據(jù)。其中一個常見的問題就是如何提交數(shù)組類型的數(shù)據(jù)。當我們有一些表單元素的值是數(shù)組時(比如多選框),我們需要將這些數(shù)組值包裝成一個對象,然后進行提交。
$('form').submit(function(){ var formData = $(this).serializeArray(); var arr = []; $.each(formData, function(){ if(this.name.match(/\[\]$/)) { var name = this.name.substr(0, this.name.length - 2); arr[name] = arr[name] || []; arr[name].push(this.value); } else { arr[this.name] = this.value; } }); $(this).ajaxSubmit({ url: '/example', type: 'post', data: {data: arr}, success: function(response){ // handle success }, error: function(){ // handle error } }); });
首先,我們將表單元素的值序列化為一個數(shù)組formData。接下來,我們創(chuàng)建一個空數(shù)組用于存放包裝后的數(shù)據(jù)arr。
然后,我們使用each()方法遍歷formData數(shù)組中所有的表單元素,對于數(shù)組類型的表單元素,我們將其包裝成一個對象,對象的key為該元素的name屬性值,value為該元素的value屬性值。對于非數(shù)組類型的表單元素,我們將key和value直接存入數(shù)組arr中。
最后,我們使用ajaxSubmit()方法提交表單數(shù)據(jù),將數(shù)組arr包裝成一個對象放入data屬性中進行提交,并在成功和失敗的回調(diào)函數(shù)中對返回結果進行處理。