Im строит простую систему входа с использованием Ajax XMLhttpRequest. PHP-файл и Javascript работают нормально ... но когда я использую тест ответа в IF Else Condition, он не работает, как я ожидаю.Если Else Condition с Ajax responseText от PHP
Вот мой 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 файл всегда возвращает истину. но когда я проверяю только файл php, он отлично работает. ошибок нет.
Я имел в виду, используя это.
while($row = mysqli_fetch_array($result)) {
echo "Hello" .$row['email']. "Thanks";
}
он дает правильный выход.
Im извините, если это непонятно .. сообщите.
Боюсь, что ваш 'mysqli_query' будет возвращать только' FALSE', если запрос вызывает ошибку в базе данных. Но ваш запрос выглядит нормально даже с неправильными учетными данными. Поэтому вам придется сделать другую проверку, например. если запрос возвращает нулевые строки. – DontVoteMeDown
@DontVoteMeDown Да, я проверил код без условия IF else в файле Javascript и файле PHP. используя массив mysqli fetch (я упомянул об этом ниже), используя для правильного имени пользователя и пароля im, получая правильный ответ. проблема в том, что если условие else я думаю – Rayan
Конечно, но 'while' не является appopriate для выполнения проверок. Я имел в виду нечто вроде ['mysqli_num_rows()'] (http://php.net/manual/en/mysqli-result.num-rows.php). – DontVoteMeDown