在web開發中,get方式是http協議中最常見的傳遞數據方式,然而get方法只能將數據附加到url中進行傳輸,而無法像post方法那樣將數據放在請求體中,因此從安全性和數據長度等方面考慮,若要傳遞較大的json數據,需要以某種方式將數據轉換成url中能識別的形式進行傳輸。
一種解決方案就是使用encodeURI()函數將json數據進行編碼,然后將編碼后的字符串放在url中進行get傳輸。代碼如下:
let jsonData = {name: '張三', age: 20, gender: '男'} let url = 'http://www.example.com/getData?data=' + encodeURI(JSON.stringify(jsonData))
在以上代碼中,JSON.stringify方法將jsonData對象轉換成json字符串,再通過encodeURI函數將字符串進行編碼,最后將編碼后的字符串附加在url的后面傳遞給服務器端。當服務器端接收到請求時,需要將url中的參數進行解碼,并將解碼后的字符串轉換成json對象進行處理。代碼如下:
let urlParams = new URLSearchParams(window.location.search) let dataStr = urlParams.get('data') let jsonData = JSON.parse(decodeURI(dataStr)) console.log(jsonData) // {name: '張三', age: 20, gender: '男'}
在以上代碼中,URLSearchParams對象可以獲取到url中的參數,get方法可以獲取data參數的值,decodeURI函數將data參數進行解碼,JSON.parse方法將字符串轉換成json對象,最終獲取到jsonData對象。
需要注意的是,由于url長度的限制,get方法傳輸的json數據大小應該控制在合理范圍內。若需要傳輸較大的數據,應該使用post方法等其他傳輸方式。
下一篇vue如何刪掉依賴