jQuery開始做惡了


我是從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 處理方式沒有被傳承下來....

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com