jquery ajax traditional參數講解

原文



jquery框架的ajax參數除了常用的

{
  url: 'xxx',
  type: 'xxx',
  data: 'xxx',
  success: 'xxx'
  ...
}

外還有有一個參數需要特別注意下traditional默認值是false。ajax做數據處理時,是通過jQuery.param( obj, traditional )該方法進行處理。
jquery1.4版本以後
traditional參數,默認false的時候如果是{a:{b:’value’}}是處理成a[b],這樣形式,如果是數組:data:{a:[1,2]},是解析成a[]=1&a[]=2,這種方式後臺確實要做兼容(取a[b]或a[])來取值。
在數組情況下把traditional參數設置成true,是解析成a=1&a=2,對後臺直接通過a拿數據。但是實驗了下object情況,把traditional設置成true,轉成了a=[object+Object],這樣就是費的了。false時解析成上面的形式應該就是類型指示作用,我看到這種格式就知道請求數據是Array還是object了,true就是按照form提交的方式傳值。

  • 針對object請求傳值,如何和服務器端配合:
    如果是get請求,可以按照
{data: {a:encodeURIComponent(JSON.stringify(xxx))}

這樣後端需要拿到a然後再進行parse。
比較建議採用POST傳值,代碼:

$.ajax({
    url:'xxx',
    type:'post',
    contentType: "application/json;",
    data:JSON.stringify({a:{b:1}})
})

這樣後端只需要通過加個註解@RequestBody,就會解析成一個java bean對象(注:這個java bean必須包含所有的json結構,如果不包含會報錯),這樣在devTool中可以看到很清晰的請求參數結構的。

附官網幾個例子:

// <=1.3.2:版本號,traditional爲true的情況

$.param({ a: [ 2, 3, 4 ] }); // "a=2&a=3&a=4"

// >=1.4:版本號

$.param({ a: [ 2, 3, 4 ] }); // "a[]=2&a[]=3&a[]=4"

// <=1.3.2:

$.param({ a: { b: 1, c: 2 }, d: [ 3, 4, { e: 5 } ] });

// "a=[object+Object]&d=3&d=4&d=[object+Object]"

// >=1.4:

$.param({ a: { b: 1, c: 2 }, d: [ 3, 4, { e: 5 } ] });

// "a[b]=1&a[c]=2&d[]=3&d[]=4&d[2][e]=5"
      </div>
    </div>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章