繁体   English   中英

AJAX“发布”请求中的JSON对象

[英]JSON object in AJAX 'post' request

我正在尝试将json对象推送到服务器:

[
    {
        name: "A",
        username: "A",
        password: "123456",
        email: "A@gmail.com"
    },
    {
        name: "B",
        username: "B1",
        password: "123456",
        email: "B1@example.com"
    }
]

save.addEventListener("click", function () {
    var dataJson = JSON.stringify(myNewData);
    var request2 = new XMLHttpRequest();
    request2.open("POST", "url", true);
    request2.setRequestHeader("Content-type", "application/json;charset=UTF-8");
    request2.send(dataJson);

    request2.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200) {
            console.log(this.responseText);
        }
    };
});

myNewData是一个JavaScript对象,我在发送数据之前先对其进行了分类。

这是发送数据的正确格式吗? 由于某种原因,似乎这样做时值未填充

如果API确实支持JSON参数,则应设置正确的Content-type:

request2.setRequestHeader("Content-type", "application/json");

如果确实需要URL编码的参数,则不能使用JSON.stringify() 您需要遍历这些对象,并将它们转换为name=value形式的URL编码参数。 要发送数组,请在名称后使用[]

var dataArray = [];
myNewData.forEach(obj => Object.keys(obj).forEach(key => dataArray.push(encodeURIComponent(key + "[]") + "=" + encodeURIComponent(obj[key]))));
request2.send(dataArray.join("&");

例如,这是PHP期望的格式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM