最近在開發(fā)中,遇到了一個問題,需要使用get請求來傳遞json數(shù)據(jù)。原本以為只需要像post請求一樣把數(shù)據(jù)放在請求體里就好了,沒想到卻遇到了困難。
經(jīng)過查閱一些資料和同事的幫助之后,終于解決了這個問題。下面是我們的解決方案:
$.ajax({ type : "get", //請求方式 url : "xxxx", //請求的 url dataType: "jsonp", // jsonp 跨域 data : {"param" : JSON.stringify(obj)}, //get請求傳遞json數(shù)據(jù) success : function(data) { //處理成功后調(diào)用的方法 } });
首先我們發(fā)現(xiàn),get請求中并沒有請求體這個概念,那么如何傳輸我們的json數(shù)據(jù)呢?我們發(fā)現(xiàn),可以將json對象轉(zhuǎn)換成字符串?dāng)?shù)據(jù),然后再當(dāng)作請求參數(shù)中的一個鍵值對來進(jìn)行傳輸。
接下來看代碼中的參數(shù):{"param" : JSON.stringify(obj)}
。其中,obj
就是我們要傳輸?shù)膉son對象。參數(shù)中的param
表示這個鍵值對的名稱,可以自定義,但是在接收方需要保持一致。這個字符串中的內(nèi)容需要使用JSON.stringify()
方法來將json對象轉(zhuǎn)換成字符串?dāng)?shù)據(jù)。
最后說一下,由于我們使用了jsonp跨域方式,因此數(shù)據(jù)返回的格式不是json,而是json的一種變形jsonp格式。不過這不影響我們對數(shù)據(jù)的處理。