Javascript 使用JSON生成XmlHttpRequest POST
如何使用vanilla JS发送JSON数据来发出AJAX POST请求 我知道内容类型是url表单编码的,它不支持嵌套JSON 有没有办法在普通的旧JS中使用嵌套JSON发出这样的POST请求。我尝试了这里的各种序列化方法,但它们都将我的JSON扁平化为一种格式 以下是我的JSON:Javascript 使用JSON生成XmlHttpRequest POST,javascript,json,ajax,Javascript,Json,Ajax,如何使用vanilla JS发送JSON数据来发出AJAX POST请求 我知道内容类型是url表单编码的,它不支持嵌套JSON 有没有办法在普通的旧JS中使用嵌套JSON发出这样的POST请求。我尝试了这里的各种序列化方法,但它们都将我的JSON扁平化为一种格式 以下是我的JSON: { email: "hello@user.com", response: { name: "Tester" } } 如果正确使用JSON,则嵌套对象不会出现任何问题: var x
{
email: "hello@user.com",
response: {
name: "Tester"
}
}
如果正确使用JSON,则嵌套对象不会出现任何问题:
var xmlhttp = new XMLHttpRequest(); // new HttpRequest instance
var theUrl = "/json-handler";
xmlhttp.open("POST", theUrl);
xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xmlhttp.send(JSON.stringify({ "email": "hello@user.com", "response": { "name": "Tester" } }));
您的问题不包含有效的JSON。也许您正在发送这个JavaScript对象,然后通过某个过程将其转换为JSON?不管怎样,正如其他人在对下面答案的评论中所说的,没有任何理由让JSON对象变平。如果您对特定的库或代码块有问题,请发布该问题。您没有在
open()
中指定目标URL?不适用于我:(@billabegueradj,他的目标URL是“/json handler”,一个到正在进行调用的域的相对路径。可能是名称有点混乱,我也遇到了同样的情况…只需将其更改为“someFolderNameHere”注意,这仅适用于“POST”和“PUT”请求。如果您使用的是“GET”请求,则xmlhttp.send的参数([参数])将被忽略。我最后将AWS API网关端点资源更改为“PUT”以解决此问题…charset=UTF-8
是不必要的,因为它是应用程序/json类型的默认编码/charset