Heim  >  Artikel  >  php教程  >  jQuery übermittelt Formulardaten schnell stapelweise über Ajax

jQuery übermittelt Formulardaten schnell stapelweise über Ajax

高洛峰
高洛峰Original
2016-12-09 10:05:591062Durchsuche

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:

<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>

Wir können die Formulardaten über die benutzerdefinierte Funktion getFormData() abrufen , sehen Sie sich bitte das folgende Beispiel an:

$(function(){
 $(&#39;#submit&#39;).click(function(){
 //选取表单
 var form = $(&#39;#fm&#39;);
 //获取表单数据
 var data = getFormData(form);
 //发送AJAX请求
 $.post(&#39;test.php&#39;,data,function(data){
  console.log(&#39;ok&#39;);
 });
 });
});

Die Implementierung von getFormData() ist sehr einfach:

function getFormData(form){
 var data = form.serialize();
 data = decodeURI(data);
 var arr = data.split(&#39;&&#39;);
 var item,key,value,newData={};
 for(var i=0;i<arr.length;i++){
 item = arr[i].split(&#39;=&#39;);
 key = item[0];
 value = item[1];
 if(key.indexOf(&#39;[]&#39;)!=-1){
  key = key.replace(&#39;[]&#39;,&#39;&#39;);
  if(!newData[key]){
  newData[key] = [];
  }
  newData[key].push(value);
 }else{
  newData[key] = value;
 }
 }
 return newData;
}

Die von test.php empfangenen Daten sind:

Array
(
 [name] => 3241324
 [age] => m_admin
 [password] => 123
 [sex] => male
 [area] => heping
 [hobby] => Array
 (
  [0] => movie
  [1] => music
 )
 [intro] => 321432423
)

Das Datenformat ist das gleiche wie das normale Formulareinreichung, wir können das ganz bequem erledigen!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn