在前端開發(fā)中,經(jīng)常會使用到Ajax異步請求獲取數(shù)據(jù)。通過get請求獲取數(shù)據(jù)是一種常見的方法。但是,我們是否可以在get請求中傳遞JSON格式的數(shù)據(jù)呢?
function getData(){ let data = {name: "Tom", age: 20}; let url = "http://api.example.com/data?data=" + JSON.stringify(data); $.ajax({ url: url, type: "GET", success: function(result){ console.log(result); }, error: function(error){ console.log(error); } }); }
從上面的代碼可以看出,我們可以通過將JSON對象轉(zhuǎn)化為字符串的方式,在url后面以參數(shù)的形式傳遞給后端。
但是需要注意的是,如果JSON數(shù)據(jù)過大,這種方式就不太適用了。因為get請求的傳輸數(shù)據(jù)是有限制的,如果數(shù)據(jù)過大容易導(dǎo)致url過長,甚至url超過瀏覽器的最大長度限制。
因此,在傳遞JSON數(shù)據(jù)時,我們可以選擇POST請求或者使用AJAX發(fā)送JSON數(shù)據(jù)。
function postData(){ let data = {name: "Tom", age: 20}; $.ajax({ url: "http://api.example.com/data", type: "POST", data: JSON.stringify(data), success: function(result){ console.log(result); }, error: function(error){ console.log(error); } }); }
通過POST請求傳遞JSON數(shù)據(jù),數(shù)據(jù)的大小限制就會大大提升,因為POST請求沒有url長度限制。而使用AJAX發(fā)送JSON數(shù)據(jù),則可以在請求頭設(shè)置Content-Type為application/json,將JSON數(shù)據(jù)放在請求體中發(fā)送。
綜上所述,雖然get請求可以傳遞JSON格式的數(shù)據(jù),但是要注意數(shù)據(jù)大小的限制。在傳遞JSON數(shù)據(jù)時,建議使用POST請求或者AJAX發(fā)送JSON數(shù)據(jù)。