我正在使用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

08-18 02:52