jQuery ajax的traditional參數的作用

來源:互聯網
上載者:User

標籤:作用   頁面   ret   弊端   數組   url   架構   this   處理   

   一般的,可能有些人在一個參數有多個值的情況下,可能以某個字元分隔的形式傳遞,比如頁面上有多個checkbox:

$.ajax{      url:"xxxx",      data:{            p: "123,456,789"      }}

 

    然後後台擷取參數後再分隔,這種做法有很大弊端,試問如果某一個參數值中出現了分隔字元所使用的字元,會出現什麼情況呢?當然後台擷取的參數將與實際情況不符. 
 這時我想到了將上述代碼寫成這樣:

$.ajax{      url:"xxxx",      data:{            p: ["123", "456", "789"]      }}

 

    如果單純寫成這樣,在java後台是無法取到參數的,因為jQuery需要調用jQuery.param序列化參數, 

jQuery.param( obj, traditional )

 

    預設的話,traditional為false,即jquery會深度序列化參數對象,以適應如PHP和Ruby on Rails架構, 
 但servelt api無法處理,我們可以通過設定traditional 為true阻止深度序列化,然後序列化結果如下:

p: ["123", "456", "789"]    =>    p=123&p=456&p=456

 

    隨即,我們就可以在後台通過request.getParameterValues()來擷取參數的值數組了, 
    所以,比如我們前台有多個checkbox,前台的代碼可以寫成: 

var values = $("input[type=checkbox]").map(function(){      return $(this).val();}).get();$.ajax{      url:"xxxx",      traditional: true,      data:{            p: values       }}

 

jQuery ajax的traditional參數的作用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.