我是從asp時代過來的程序員,那個時代如果你傳一個name相同的多個表單元素到后台時,它會形成一個數組,你可以獲取name就行了,
但是當jQuery1.4出來時就不一樣了,它改變了規則,它默認加了[]符號到name后面,變成了name[].
{foo: ["bar", "baz"]}
會被序列化為 “foo[]=bar&foo[]=baz”.
在jQuery 1.3版里, {foo: ["bar", "baz"]}
會被序列化為 “foo=bar&foo=baz”.
用jQuery.ajaxSettings.traditional
進行全局切換,或者根據情況單獨切換。
總共有3種方式可以切換到舊的序列化方式:
1 // 全局改變序列化方式 (使用舊的) 2 jQuery.ajaxSettings.traditional = true; 3 // 指定情況使用舊的序列化方式 4 jQuery.param( stuff, true ); 5 // 針對一個單獨的Ajax請求使用舊的序列化方式 6 $.ajax({ data: stuff, traditional: true });
隨着年齡的增加,好多年不用這種寫法了,記憶也模糊了。。。
html 中是允許多個具有相同name屬性的元素的
服務器端讀取的常規做法是:
string name = Request.Params["txtName"];
得到的將是一串以逗號分割的字符串,當然你可以手動分割:
string[] nameParts = name.Split(',');
但是當每個 input 輸入可能包含逗號的時候,通過逗號分割就會是錯的。
如何解決?
在 Classic ASP 通過 Request 可以這樣分別獲取
<%
firstName = Request.Form("txtName")(1)
middleName = Request.Form("txtName")(2)
lastName = Request.Form("txtName")(3)
%>
在 ASP.NET HttpRequest 同樣支持 Classic ASP Request 的用法,
string[] nameParts = Request.Params.GetValues("txtName");
string firstName = nameParts[0];
string middleName = nameParts[1];
string lastName = nameParts[2];
以上用法對於 GET/POST 方式提交都是適用的。
值得注意的是,用來存儲 QueryString/Form/ServerVariables 的對象是 System.Collections.Specialized.NameValueCollection, 這是 Key/Value 型對象,它的特殊性在於,一個Key下可存儲多個 Value。
越來越懷念 Classic ASP,ASP+ 將簡單的HTTP裹得太嚴實,很多簡單實用的用法逐漸被遺忘,漫天飛的 runat="server" 讓諸多原始但精巧的 form 處理方式沒有被傳承下來....
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。