PHP总是使用XmlHttpRequest接收空POST

时间:2018-04-07 09:09:41

标签: javascript php xmlhttprequest

我试图通过POST为登录做一个XMLHttpRequest,并且之前实际上已经这样做了。我试图从一个正在运行的项目中回收我的代码并稍微改变它但它不再工作了,老实说我不知道​​为什么。

发送的POST总是空的。

        var user = document.getElementById("username").value;
    var pw = document.getElementById("password").value;

    if(user != "" && pw != "") {

        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status === 200) {
                var response = this.responseText;
                console.log(response);
                if(response == "-1") {
                  //do stuff
                } else if(response == "1") {
                    window.location.href = "/dashboard/"
                }
            }
        };
        var params = "username="+user+"&password="+pw+"&do=login";
        xmlhttp.open("POST","provider/SessionServices.php",true);
        xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        xmlhttp.send(params);

它确实执行了请求,我收到了错误的POST参数的错误代码。我还使用print_r($ _ POST)调试,并且必须看到从未发送过POST数据。

编辑: SessionServices.php

print_r($_POST);
if(isset($_POST["username"]) && !empty($_POST["username"]) && 
isset($_POST["password"]) && !empty($_POST["password"])) {
if ($_POST["do"] == "login") {
    //login request by xmlhhtp
    $user = $_POST["username"];
    $pw = $_POST["password"];


    //do stuff
} else {
    echo "XH-102"; //unknown action
}
} else {
 echo "XH-101"; //user,pw,do empty or not set

它始终输出"数组 ( ) XH-101"

1 个答案:

答案 0 :(得分:0)

好吧,好像我找到了这个问题。 XMLHttpRequests(或只是使用POST?)似乎不能在本地使用或至少使用XAMPP。当我将它上传到我的网络服务器时,它就可以了。