使用 JSON 制作 XmlHttpRequest POST [重复]
Posted
技术标签:
【中文标题】使用 JSON 制作 XmlHttpRequest POST [重复]【英文标题】:Make XmlHttpRequest POST using JSON [duplicate] 【发布时间】:2017-01-23 23:02:42 【问题描述】:如何使用 vanilla JS 发送 JSON 数据的 AJAX POST 请求。
我知道内容类型是 url 格式编码的,它不支持嵌套的 JSON。
有什么方法可以在普通的旧 JS 中使用嵌套 JSON 发出这样的 POST 请求。我已经尝试过在 SO 上找到的各种序列化方法,但它们都将我的 JSON 扁平化为一种格式。
这是我的 JSON:
email: "hello@user.com",
response:
name: "Tester"
【问题讨论】:
您的问题不包含有效的 JSON。也许您正在发送这个 javascript 对象,然后通过一些过程将其转换为 JSON?无论哪种方式,正如 cmets 中其他人对以下答案所说的那样,没有任何理由应该展平您的 JSON 对象。如果您对特定库或代码块有疑问,请改为发布。 【参考方案1】:如果你正确使用 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" ));
【讨论】:
您没有在open()
中指定目标网址?
不适合我:(
@BillalBegueradj,他的目标 URL 是“/json-handler”,一个指向正在调用的域的相对路径。可能是这个名字有点混乱,我也遇到过这种情况......只需将其更改为“someFolderNameHere”
请注意,这只适用于“POST”和“PUT”请求。如果您使用“GET”请求,则 xmlhttp.send([argument]) 的参数将被忽略。我最终将 AWS API Gateway 端点资源更改为“PUT”以解决此问题...
charset=UTF-8
是不必要的,因为它是 application/json 类型的默认编码/字符集以上是关于使用 JSON 制作 XmlHttpRequest POST [重复]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能使用 XMLHttpRequest 从本地网络获取 JSON 文件? [复制]
为啥我不能使用 XMLHttpRequest 从本地网络获取 JSON 文件? [复制]
我已经使用这种 xmlhttprequest 方法来制作显示水质但无法正常工作的实时仪表图表?