jquery input name 有無[] 區別及心得


  我主做后端,對於前端的知識很是欠缺,很多時候要用到的時候才去百度一下,但是當時的問題解決的並沒有掌握具體的用法及原理,所以我前端的知識這么久以來掌握的還是很片面。

 

  這次遇到一個問題就是 form 表單動態添加,提交表單之后獲取數據希望是多維數組,不然最后的同名input name 值會把之前的給覆蓋掉,因為對前端的知識不了解,問題描述也不是很清晰,繞了一點彎路。

不過好歹是查詢到了自己想要的資料。。。接下來我做一下記錄

 

1 input數組

如下一個表單:

<input type="text" name="username[]" value="Jason" /> <input type="text" name="username[]" value="Tom" /> <input type="text" name="username[]" value="Goe" />

我們在name屬性值后面加一個中括號[],后台獲取數據的時候,就能拿到一個數組:$_POST['username'] = ['Jason', 'Tom', 'Goe']

 

2 非input數組

另一種容易混淆的提交方式,就是name后面沒有中括號[]

<input type="text" name="username" value="Jason" /> <input type="text" name="username" value="Tom" /> <input type="text" name="username" value="Goe" />

這種情況提交后,后台拿不到一個數組,而是最后那個標簽的值,也就是$_POST['username'] = 'Goe'

 

這個是我開始犯得的錯誤,這樣最后的值會覆蓋之前的重名name input 值。

 

3 非input數組方式提交成數組

上面兩種提交方式中,直接點提交按鈕提交,和用jQuery$('form').seriaze()序列化提交,得到的結果都是一樣的。

[]后台得到數組,不加[]得到最后標簽的值。

如果第二種也要提交成數組,那怎么辦呢?

辦法就是,在提交之前用jQuery處理:

$('form').on('submit',function(e) { e.preventDefault(); var data = $("input[name='username']").map(function () { return $(this).val(); }).get(); $.post('save.php', {username: data}, function(r){ $('p').html(r); }); });


我是參照這個方法解決自己的問題的。

 


免責聲明!

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



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