在Web開發中,GET和POST請求都是常見的HTTP請求方法。GET請求通常用于獲取數據,而POST請求通常用于提交數據。GET請求可以將數據通過URL參數的形式傳遞給服務器,但是如果要傳遞JSON格式的數據,需要將JSON數據轉換為URL參數格式。
GET /example HTTP/1.1 Host: example.com Accept: application/json { "name": "John", "age": 30 }
上面的代碼展示了通過GET請求傳遞JSON數據的一種方式。在請求頭中設置Accept為application/json,表示服務器應該返回JSON格式的數據。在請求體中傳遞JSON數據,但是需要將JSON數據作為URL參數進行編碼,即將JSON字符串中的特殊字符進行轉義。
為了方便起見,通常使用JavaScript中的encodeURIComponent函數進行URL編碼,將JSON數據轉換為URL參數格式。
function getJSON() { var data = { name: "John", age: 30 }; var querystring = Object.keys(data).map(function(key) { return encodeURIComponent(key) + '=' + encodeURIComponent(data[key]) }).join('&'); var xhr = new XMLHttpRequest(); xhr.open('GET', '/example?' + querystring, true); xhr.onload = function() { if (xhr.status >= 200 && xhr.status< 400) { var data = JSON.parse(xhr.responseText); console.log(data); } else { console.error(xhr.statusText); } }; xhr.onerror = function() { console.error(xhr.statusText); }; xhr.send(); }
上面的代碼展示了通過XMLHttpRequest對象發送GET請求,并在請求的URL中傳遞JSON數據的方法。使用了Object.keys函數獲取JSON對象的所有鍵,以數組的形式返回。然后使用數組的map方法遍歷數組,將每個鍵值對轉換為URL參數格式。最后使用數組的join方法將所有URL參數拼接成一個字符串,然后使用XMLHttpRequest對象的send方法發送GET請求。