2017-08-23 107 views
-1
<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> 

爲什麼這段代碼不起作用?我做錯了什麼,當我按下提交按鈕時,它沒有POST形式的數據用JavaScript發送POST數據(xhttp)(ajax)

有人可以解釋我哪裏出了問題?

編輯:而不是輸出什麼是在它的形式輸出a和b。

+2

[使用XMLHttpRequest發送POST數據]的可能重複(https://stackoverflow.com/questions/9713058/send-post-data-using-xmlhttprequest) –

+1

您不取消表單提交 – epascarello

+0

您有沒有看過在控制檯?它說什麼? -----另外,爲'添加一個'id' – acdcjunior

回答

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); 

,它應該工作。