標籤:ber http $.ajax 預設 自訂資料類型 情況下 常用 串連 ring
在http 請求中,get 和 post 是最常用的。在 jquery 的 ajax 中, contentType都是預設的值:application/x-www-form-urlencoded,這種格式的特點就是,name/value 成為一組,每組之間用 & 聯結,而 name與value 則是使用 = 串連。如: wwwh.baidu.com/q?key=fdsa&lang=zh 這是get , 而 post 請求則是使用請求體,參數不在 url 中,在請求體中的參數表現形式也是: key=fdsa&lang=zh的形式。
索引值對這樣組織在一般的情況下是沒有什麼問題的,這裡說的一般是,不帶巢狀型別JSON,也就是 簡單的JSON,形如這樣:
{ a: 1, b: 2, c: 3}
但是在一些複雜的情況下就有問題了。 例如在 ajax 中你要傳一個複雜的 json 對像,也就說是對象嵌數組,數組中包括對象,兄果你這樣傳:
{ data: { a: [{ x: 2 }] }}
這個複雜物件, application/x-www-form-urlencoded 這種形式是沒有辦法將複雜的 JSON 組織成索引值對形式
這怎麼可以呢?
聰明的程式員發現 http 還可以自訂資料類型,於是就定義一種叫 application/json 的類型。這種類型是 text , 我們 ajax 的複雜JSON資料,用 JSON.stringify序列化後,然後發送,在伺服器端接到然後用 JSON.parse 進行還原就行了,這樣就能處理複雜的對象了。
$.ajax({ dataType: ‘json‘, contentType: ‘application/json‘, data: JSON.stringify({a: [{b:1, a:1}]})})
這樣你就可以發送複雜JSON的對象了。像現在的 restclient 都是這樣處理的
$.ajax 中的contentType