我有一些网页,这些网页的内容是从数据库(一种新闻网站)中加载的。而且我有一个页面,该页面提供了用于添加文章和修改某些网页元素的界面,例如网站的页眉内容或页脚内容。
要在服务器上保存信息,请使用以下代码(示例):
// on button click (not form with type="submit") a function is called which retrieves HTML form values separately and sends them to the function below
function sendRequest(HEADER, FOOTER) {
let xhttp = new XMLHttpRequest();
xhttp.open("GET", `/server.js?header=${HEADER}&footer=${FOOTER}`);
xhttp.send();
}
HEADER
和FOOTER
是一些字符串。问题在于,所有空格" "
和所有西里尔字母也都以十六进制形式进行编码,例如"%20"
和"%D0%BA"
(这是一个示例,idk是它对应的字符)。因此,保存在数据库中并从数据库中检索的文本看起来像是一团糟,而我的浏览器(我相信是Google Chrome,我认为是最新版本)不会将这些十六进制值解码为普通文本。>
是否存在一种防止字符编码的解决方法,可以通过某种方式轻松地将值解码为字符,还是可以在浏览器/系统中修复此问题?
我仍在学习基础知识,而我对后端的了解却很糟糕,因此做出上述设计选择是因为“它们的性能足够好”。
答案 0 :(得分:0)
这是使用"GET"
方法的问题。使用"POST"
,我可以正确地发送数据而不进行编码:
function sendRequest(HEADER, FOOTER) {
let xhttp = new XMLHttpRequest();
xhttp.open("POST", `server.js`);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send(`header=${HEADER}&footer=${FOOTER}`);
}