Wenn es viele Formulardatenelemente gibt, ist es ineffizient, die Werte der Formularelemente manuell abzurufen. In Kombination mit der von jQuery bereitgestellten Funktion serialize() können wir die Daten schnell abrufen und die Formulardaten senden.
Bitte schauen Sie sich das Formular unten an:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | <form id= "fm" >
<table>
<tr>
<td>姓名</td>
<td>
<input type= "text" name= "name" />
</td>
</tr>
<tr>
<td>年龄</td>
<td>
<input type= "text" name= "age" />
</td>
</tr>
<tr>
<td>密码</td>
<td>
<input type= "password" name= "password" />
</td>
</tr>
<tr>
<td>性别</td>
<td>
<input type= "radio" name= "sex" value= "male" />男
<input type= "radio" name= "sex" value= "female" />女
</td>
</tr>
<tr>
<td>地区</td>
<td>
<select name= "area" >
<option value= "heping" >和平区</option>
<option value= "nankai" >南开区</option>
<option value= "xiqing" >西青区</option>
<option value= "hexi" >河西区</option>
</select>
</td>
</tr>
<tr>
<td>爱好</td>
<td>
<input type= "checkbox" name= "hobby[]" value= "movie" />电影
<input type= "checkbox" name= "hobby[]" value= "music" />音乐
<input type= "checkbox" name= "hobby[]" value= "basketball" />篮球
</td>
</tr>
<tr>
<td>个人介绍</td>
<td>
<textarea name= "intro" ></textarea>
</td>
</tr>
<tr>
<td></td>
<td>
<input type= "button" value= "提交" id= "submit" />
</td>
</tr>
</table>
</form>
|
Nach dem Login kopieren
Wir können die Formulardaten über die benutzerdefinierte Funktion getFormData() abrufen , sehen Sie sich bitte das folgende Beispiel an:
1 2 3 4 5 6 7 8 9 10 11 12 | $( function (){
$('#submit').click( function (){
var form = $('#fm');
var data = getFormData(form);
$.post('test.php',data, function (data){
console.log('ok');
});
});
});
|
Nach dem Login kopieren
Die Implementierung von getFormData() ist sehr einfach:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function getFormData(form){
var data = form.serialize();
data = decodeURI(data);
var arr = data.split('&');
var item,key,value,newData={};
for ( var i=0;i<arr.length;i++){
item = arr[i].split('=');
key = item[0];
value = item[1];
if (key.indexOf('[]')!=-1){
key = key.replace('[]','');
if (!newData[key]){
newData[key] = [];
}
newData[key].push(value);
} else {
newData[key] = value;
}
}
return newData;
}
|
Nach dem Login kopieren
Die von test.php empfangenen Daten sind:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Array
(
[name] => 3241324
[age] => m_admin
[password] => 123
[sex] => male
[area] => heping
[hobby] => Array
(
[0] => movie
[1] => music
)
[intro] => 321432423
)
|
Nach dem Login kopieren
Das Datenformat ist das gleiche wie das normale Formulareinreichung, wir können das ganz bequem erledigen!