jQuery ajax的traditional參數的做用///////////////////////////////////zzzzzzzzzzz

jQuery ajax的traditional參數的做用javascript

  • 發佈時間: 2013/04/03 10:05
  • 閱讀: 9859
  • 收藏: 9
  • 點贊: 1
  • 評論: 0

    通常的,可能有些人在一個參數有多個值的狀況下,可能以某個字符分隔的形式傳遞,好比頁面上有多個checkbox:php

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

    而後後臺獲取參數後再分隔,這種作法有很大弊端,試問若是某一個參數值中出現了分隔符所使用的字符,會出現什麼狀況呢?固然後臺獲取的參數將與實際狀況不符.
這時我想到了將上述代碼寫成這樣:css

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

    若是單純寫成這樣,在java後臺是沒法取到參數的,由於jQuery須要調用jQuery.param序列化參數, java

jQuery.param( obj, traditional )

    默認的話,traditional爲false,即jquery會深度序列化參數對象,以適應如PHP和Ruby on Rails框架,
但servelt api沒法處理,咱們能夠經過設置traditional 爲true阻止深度序列化,而後序列化結果以下:jquery

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

    隨即,咱們就能夠在後臺經過request.getParameterValues()來獲取參數的值數組了,
    因此,好比咱們前臺有多個checkbox,前臺的代碼能夠寫成: ajax

var values = $("input[type=checkbox]").map(function(){ return $(this).val(); }).get(); $.ajax{ url:"xxxx", traditional: true, data:{ p: values } }
相關文章
相關標籤/搜索