正常情况下,我们可以发送ajax请求或向服务器提交表单,其中HTTP request body
将被编码为这样的name=helloworld&age=123
。Javascript:如何将任意请求主体POST到服务器?
现在我们的服务器only accept JSON data
作为请求体,有没有什么办法可以改变Javascript中的请求体的编码方法?
正常情况下,我们可以发送ajax请求或向服务器提交表单,其中HTTP request body
将被编码为这样的name=helloworld&age=123
。Javascript:如何将任意请求主体POST到服务器?
现在我们的服务器only accept JSON data
作为请求体,有没有什么办法可以改变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);
}
他确实表示他在谈论ajax调用,所以我假设他不是在谈论表单提交。 –
@Udi - 提问者说“ajax请求或提交表单”,所以我假设他们对这两者都感兴趣。但是,我认为这个答案应该包括这样一个事实,即对于普通形式你不能做类似的事情。 – cloudfeet
@cloudfeet你说得对。我的错。 –
你可以附上一个代码示例吗? –
@MrROY - 你无法改变它的形式。虽然AJAX请求可以提交为JSON。 – cloudfeet