<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,而不是输出表单中的内容。
答案 0 :(得分:1)
事实上,不要忘记将id="message"
添加到该行:Message: <input type="text" name="message" id="message"><br>
。
你做
var postdata = "name=a&message=b";
// ...
xhttp.send(postdata);
因此,您发布的值实际上是"a"
和"b"
。
而不是那样,您需要将a
和b
变量的值添加到postdata
。简单的字符串连接可以做,但在你需要转义它们之前(使用encodeURIComponent()
),以防它们有特殊的字符。
因此,请尝试以下方法进行修复。 更改强>:
var postdata = "name=a&message=b";
要:
var postdata = "name=" + encodeURIComponent(a) + "&message=" + encodeURIComponent(b);
它应该有用。