我正在尝试将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对象,我在发送数据之前将其字符串化。
这是发送数据的正确格式吗?出于某种原因,当这样做时,似乎没有填充值
答案 0 :(得分:2)
如果API确实支持JSON参数,则应设置正确的Content-type:
:
request2.setRequestHeader("Content-type", "application/json");
如果确实需要网址编码参数,则无法使用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期望的格式,例如。