encodeURI()函數(shù)是JavaScript中的一個(gè)全局函數(shù),可以將指定字符串中的一個(gè)或多個(gè)字符進(jìn)行編碼。當(dāng)我們需要將一個(gè)JavaScript數(shù)據(jù)對(duì)象轉(zhuǎn)換為一個(gè)字符串時(shí),需要使用JSON.stringify()函數(shù)。但是,由于一些特殊字符,如空格、斜杠等等,會(huì)使字符串出現(xiàn)語法錯(cuò)誤,難以被讀取和解析。這時(shí),就需要使用encodeURI()函數(shù)對(duì)字符串進(jìn)行編碼。
//原始JSON數(shù)據(jù) var jsonData = {"name":"張三","age":20,"address":"北京市"}; // 將JSON數(shù)據(jù)轉(zhuǎn)換為字符串 var jsonString = JSON.stringify(jsonData); // 對(duì)字符串進(jìn)行URI編碼 var encodedString = encodeURI(jsonString);
以上代碼中,我們首先創(chuàng)建了一個(gè)名為jsonData的JavaScript對(duì)象。然后,我們使用JSON.stringify()函數(shù)將其轉(zhuǎn)換為一個(gè)字符串。接下來,我們使用encodeURI()函數(shù)對(duì)該字符串進(jìn)行編碼,并將編碼后的字符串賦值給變量encodedString。
在發(fā)送HTTP請(qǐng)求時(shí),通常需要在請(qǐng)求正文中包含JSON數(shù)據(jù)。使用encodeURI()函數(shù)可以確保發(fā)送的數(shù)據(jù)是符合規(guī)范的,不會(huì)產(chǎn)生語法錯(cuò)誤。
//發(fā)送HTTP POST請(qǐng)求 var xhr = new XMLHttpRequest(); xhr.open("POST", "https://example.com/api", true); xhr.setRequestHeader("Content-Type", "application/json;charset=utf-8"); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { var response = xhr.responseText; console.log(response); } }; xhr.send(encodedString);
以上代碼中,我們使用XMLHttpRequest對(duì)象發(fā)送了一個(gè)HTTP POST請(qǐng)求。此處需要注意,我們?cè)谠O(shè)置HTTP請(qǐng)求頭中,指定了Content-Type為application/json;charset=utf-8。這表示接收方應(yīng)該將請(qǐng)求正文解析為JSON格式的數(shù)據(jù)。
最后,我們通過調(diào)用XHR對(duì)象的send()方法,將編碼后的JSON字符串作為請(qǐng)求正文發(fā)送。