Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用JSON生成XmlHttpRequest POST_Javascript_Json_Ajax - Fatal编程技术网

Javascript 使用JSON生成XmlHttpRequest POST

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

如何使用vanilla JS发送JSON数据来发出AJAX POST请求

我知道内容类型是url表单编码的,它不支持嵌套JSON

有没有办法在普通的旧JS中使用嵌套JSON发出这样的POST请求。我尝试了这里的各种序列化方法,但它们都将我的JSON扁平化为一种格式

以下是我的JSON:

{
   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