正常,我们可以发送Ajax请求或向服务器提交表单,在HTTP请求正文中,其编码应如下所示:name=helloworld&age=123
。
现在我们的服务器仅接受JSON数据作为请求正文。有没有办法在JavaScript中更改请求主体的编码方法?
HTML表单为您提供了三种编码数据的选项。 text/plain
仅对调试有用(即使使用给定的浏览器开发人员工具也不太有用),另外两个都不是JSON。
使用XHR,但是编码是对数据进行编码。 send
方法可以采用字符串。您可以根据需要在该字符串中编码数据。
function sendJSON() {
var data = {
name: "helloworld",
age: 123
};
var json = JSON.stringify(data);
var xhr = new XMLHttpRequest();
xhr.open("POST", "/example/");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(json);
}