使用JavaScript发送POST数据(xhttp)(ajax)

时间:2017-08-23 17:01:04

标签: javascript jquery ajax http https

<script>
function loadDoc() {
  var xhttp = new XMLHttpRequest();

    var a = document.getElementById("name").value;
    var b = document.getElementById("message").value;
    var postdata = "name=a&message=b"; //Probably need the escape method for values here, like you did

  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("demo").innerHTML = this.responseText;
    }
  };
  xhttp.open("POST", "/chat/backend-input.php", true);
  xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xhttp.send(postdata);
}
</script>

<form onsubmit="loadDoc()">
Name: <input type="text" name="name" id="name"><br>
Message: <input type="text" name="message"><br>
<input type="submit"></input>
</form>

为什么这段代码不起作用?我做错了什么,当我按下提交按钮时,它不会发布表单中的数据

有人可以解释我哪里出错吗?

编辑:输出a和b,而不是输出表单中的内容。

1 个答案:

答案 0 :(得分:1)

事实上,不要忘记将id="message"添加到该行:Message: <input type="text" name="message" id="message"><br>

发布数据

你做

var postdata = "name=a&message=b";
// ...
xhttp.send(postdata);

因此,您发布的值实际上是"a""b"

而不是那样,您需要将ab变量的值添加到postdata。简单的字符串连接可以做,但在你需要转义它们之前(使用encodeURIComponent()),以防它们有特殊的字符。

因此,请尝试以下方法进行修复。 更改

var postdata = "name=a&message=b";

要:

var postdata = "name=" + encodeURIComponent(a) + "&message=" + encodeURIComponent(b);

它应该有用。