數組方式進行表單提交


  今天遇到一個問題,要保存很多表單信息,苦惱了許久,終於發現一個挺不錯的方法,以數組的形式把表單中的數據提交至后台進行保存。

  其實實現起來很簡單,就是給表單中要提交的信息的name命名時要有一定的規范,我們先比較下下面這兩種方式的差別:

第一種、普通的方式,每個要提交的值都有一個名稱

<form id="form1" action="./index.php" method="get">
	<div class="form-control">
		<input type="text" name="name1" />
		<input type="text" name="num1" />
		<input type="text" name="img1" />
	</div>
	<br>
	<div class="form-control">
		<input type="text" name="name2" />
		<input type="text" name="num2" />
		<input type="text" name="img2" />
	</div>
	<br>
	<div class="form-control">
		<input type="text" name="name3" />
		<input type="text" name="num3" />
		<input type="text" name="img3" />
	</div>
	......
  <input type="submit" value="Submit" />
</form>

  服務(index.php)很簡單就兩句話

<?php
echo "<pre>";
print_r($_GET);

  在渲染好的網頁上填入下面信息並點擊提交

  通過瀏覽器看到的 Query String Paramaters是這樣的

  在服務段會收到這樣的信息

  對與后端來說這樣可能不是太好處理,要是能把同一組的三個信息放在一個數組中,是不是就好處理多了,下面再看看另外一種方式

第二種、數組的方式進行表單提交

<form id="form1" action="./index.php" method="get">
	<div class="form-control">
		<input type="text" name="infos[1][name]" />
		<input type="text" name="infos[1][num]" />
		<input type="text" name="infos[1][img]" />
	</div>
	<br>
	<div class="form-control">
		<input type="text" name="infos[2][name]" />
		<input type="text" name="infos[2][num]" />
		<input type="text" name="infos[2][img]" />
	</div>
	<br>
	<div class="form-control">
		<input type="text" name="infos[3][name]" />
		<input type="text" name="infos[3][num]" />
		<input type="text" name="infos[3][img]" />
	</div>
	......
  <input type="submit" value="Submit" />
</form>

  細心看看就會發現,要提交的數據的名字name發生了變化,在這里看可能還不太明顯,當點擊提交后會發現傳到后端的值整齊多了,看看下面的截圖

  通過瀏覽器插件解析過的查詢字符串是這樣的

  服務端打印出來的數據是這樣的:

  當后台收到這樣的數據的時候是不是就好處理多了,省了好多事,當然,這個地方還有要注意的地方,在給要提交的值命名的時候數組中不用加引號,加引號之后后端的鍵值中會存在引號,這點要注意。還有一點要注意的是,現在更流行的做法是ajax提交,用ajax提交的時候怎么獲取表單中的值呢?這個其實也很簡單通過jquery提供的serialize()方法可以很方便的將所有要提交的內容拼接成url字符串,然后通過get的方式就可以提交給后台了。

  當然了,實際中還可能遇到這樣的問題,要提交的組數(像上面的1、2、3)是不確定的,可以在前端隨意的添加,這個時候怎么去用數組提交這些內容呢?這個還是可以通過合適的明明很便捷的解決掉的,

<form id="form1" action="./index.php" method="get">
	<div class="form-control">
		<input type="text" name="infos[name][]" />
		<input type="text" name="infos[num][]" />
		<input type="text" name="infos[img][]" />
	</div>
	<br>
	<div class="form-control">
		<input type="text" name="infos[name][]" />
		<input type="text" name="infos[num][]" />
		<input type="text" name="infos[img][]" />
	</div>
	<br>
	<div class="form-control">
		<input type="text" name="infos[name][]" />
		<input type="text" name="infos[num][]" />
		<input type="text" name="infos[img][]" />
	</div>
	......
  <input type="submit" value="Submit" />
</form>

 先看看瀏覽器傳遞的數據

   

 這個時候后端收到的數據是這樣的

  

  得到這樣的數據,也很容易將每一組的信息進行歸類了。是不是很方便呢,在沒有使用這個方法之前,我每次遇到這樣的問題都很頭疼,現在可以輕松的解決掉了。

  本文版權歸作者iforever(luluyrt@163.com)所有,未經作者本人同意禁止任何形式的轉載,轉載文章之后必須在文章頁面明顯位置給出作者和原文連接,否則保留追究法律責任的權利。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM