我正在使用XMLHttpRequest读取一个名为“ filename%3Fformat = json”的文件。我收到一条错误消息,说zone.js:1382 GET http://localhost:3000/file%3Fformat=json 404(未找到)。
如果我将请求更改为“ filename3Fformat = json”,并将文件名更改为相同的文件名(基本上从文件名和请求中都删除了%,它就可以了……但是我需要能够在文件名中包含% 。
我在无奈之下添加了setRequestHeader,但这似乎没有任何区别。
var requestAllStations = new XMLHttpRequest();
requestAllStations.onload = function ( ) {
if (requestAllStations.readyState == requestAllStations.DONE && requestAllStations.status == 200) {
// get json file content
var allFITStations = JSON.parse(requestAllStations.responseText);
console.log(allFITStations);
}
};
requestAllStations.open("get", "./file%3Fformat=json", true );
requestAllStations.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
requestAllStations.send();
最佳答案
使用Java的escape()函数对特殊字符进行编码。
requestAllStations.open("get", escape("./file%3Fformat=json"), true );
字符串转义后的字符串将如下所示:
./file%253Fformat%3Djson