即使我输入的用户名和密码正确,此代码也始终返回0。我也确实尝试了没有ajax的php代码,但是效果很好。
PHP
include('config/connection.php');
if(isset($_POST['login'])){
$username = mysqli_real_escape_string($conn,$_POST['username']);
$password = mysqli_real_escape_string($conn,$_POST['password']);
$select_query = mysqli_query($conn,"SELECT * FROM tbl_users WHERE username='$username' AND password ='$password'");
$count_rows = mysqli_num_rows($select_query);
if($count_rows > 0){
echo "1";
} else {
echo "0";
}
}
AJAX
$('form').on('submit', function (e) {
e.preventDefault();
$.ajax({
type: 'post',
url: 'phpscripts/function/fnc_login.php',
data: $('form').serialize(),
success: function (result) {
//if fnc_login.php returned 1/true
//redirect to index page
if (result == 1) {
window.location = "index.php";
//if fnc_login.php returned 0/false
} else {
$('#message').html('User not found!').fadeIn('slow');
}
}
});
});
return false;
答案 0 :(得分:-2)
在ajax成功函数中,如下警告结果:
alert('-' + result + '-');
这将指示从服务器收到的实际和完整的响应数据。您的响应可能包含换行符或某些文本,这些文本可能导致jquery误解了响应数据类型。
如果数据类型显示错误,则可以这样传递一个显式数据类型:
$.ajax({
type: 'post',
url: 'phpscripts/function/fnc_login.php',
dataType: 'text',
data: $('form').serialize(),
最后,一旦您知道响应的模样并且知道它是100%正确的,就可以将其作为字符串进行比较,如下所示:
if (result == "1") { }
答案 1 :(得分:-3)
您检查响应中的整数值而不是字符串
transpose
希望它可以解决您的问题。