如果Else Condition with Ajax responseText from PHP

时间:2014-11-17 17:48:11

标签: javascript php jquery mysql ajax

使用Ajax XMLhttpRequest构建简单的登录系统。 PHP文件和Javascript都工作正常..但是当我在IF Else Condition中使用响应测试时,它不能正常工作。

这是我的HTML

<div class="login-form">

        <input type="username" name="username" id="username" class="text-input--underbar" placeholder="Username" value="">
        <input type="password" name="password" id="password" class="text-input--underbar" placeholder="Password" value="">
        <br><br>
        <ons-button modifier="large" onClick="javascript:ajax_post();" class="login-button">Log In</ons-button>
        <br><br>
        <ons-button modifier="quiet" class="forgot-password">Forgot password?</ons-button>
      </div>
<div id="status"></div>

这是我的Javascript代码。

function ajax_post(){
    // Create our XMLHttpRequest object
    var hr = new XMLHttpRequest();
    // Create some variables we need to send to our PHP file
    var url = "http://boost.meximas.com/mobile/login.php";
    var fn = document.getElementById("username").value;
    var ln = document.getElementById("password").value;
    var vars = "username="+fn+"&password="+ln;
    hr.open("POST", url, true);

    // Set content type header information for sending url encoded variables in the request
    hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    // Access the onreadystatechange event for the XMLHttpRequest object

    hr.onreadystatechange = function() {
      if(hr.readyState == 4 && hr.status == 200) {
        var return_data = hr.responseText;
      document.getElementById("status").innerHTML = return_data;

      if(return_data=="true"){
        alert("Yes Login True");
      }else{
        alert("No Login False");
      }

      }
    }
    // Send the data to PHP now... and wait for response to update the status div
    hr.send(vars); // Actually execute the request
    document.getElementById("status").innerHTML = "processing...";
}

这是我的PHP代码

if(isset($_POST['username']) && isset($_POST['password'])){
    $username = $_POST['username'];
    $password = $_POST['password'];
}

$sql = "SELECT * FROM member WHERE username = '$username' AND password = '$password'";
$result = mysqli_query($con,$sql);


if(!$result){
    echo "failed";
}else{
    echo "true";
}

对于错误的输入,即时获取Yes Login True和状态内部HTML True,这意味着PHP文件始终返回True。但是当我单独检查php文件时它工作正常..没有错误。

我的意思是使用它。

while($row = mysqli_fetch_array($result)) {

    echo "Hello" .$row['email']. "Thanks";
}

它提供了正确的输出。

对不起,如果不清楚......请告诉我。

1 个答案:

答案 0 :(得分:0)

如果您的查询在数据库中产生错误,函数mysqli_query()将仅返回FALSE。否则,它将始终返回TRUE。为此,您应该以另一种方式检查结果,例如使用mysqli_num_rows()

此外,建议您在使用它们进行查询之前清理用户的输入。永远记住Booby Tables(和how to prevent it in PHP)。