带有JSON数据的Javascript HTTP POST

ana*_*wly 8 javascript post http

我可以发送如下请求吗?为参数分配JSON样式对象.我只得到错误.但是当我使用REST客户端并选择RAW数据时,没关系.我想我必须写错了代码.如何在JavaScript中发送原始JSON数据?谁能帮助我?

xmlhttp = new XMLHttpRequest();
var url = "https://someURL";
xmlhttp.open("POST", url, true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = function () { //Call a function when the state changes.
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        alert(xmlhttp.responseText);
    }
}
var parameters = {
    "username": "myname",
    "password": "mypass"
};
// Neither was accepted when I set with parameters="username=myname"+"&password=mypass" as the server may not accept that
xmlhttp.send(parameters);
Run Code Online (Sandbox Code Playgroud)

Que*_*tin 21

不.该send()方法可以采用许多不同的参数类型,但普通对象不是其中之一(因此它可能最终会toString()被调用并被转换为"[Object object]").

如果你想发送JSON,你必须:

  1. 假设您正在发送JSON: xmlhttp.setRequestHeader("Content-type", "application/json");
  2. 将JavaScript对象转换为JSON文本字符串: var parameters = JSON.stringify({"username":"myname","password":"mypass"});
  3. 准备好在服务器端接受JSON而不是application/x-www-form-urlencoded数据.

另请注意,由于您使用的是绝对 URI,因此可能会遇到跨域问题.