我有一个使用jquery ajax和php代码的登录表单。问题是is总是返回一个错误,而不是将我登录到系统中。我花了好几天的时间试图找出错误,但我找不到。如果我直接访问该网页,它不会显示任何错误。大约一周前,这种情况一直有效,直到我不小心删除了jquery,现在我无法让它工作。
以下是PHP代码:
include('.conf.php');
$user = $_POST['user'];
$pass = $_POST['pass'];
$result = mysql_query("SELECT * FROM accountController WHERE username = '$user'");
while ($row = mysql_fetch_array($result)) {
if (sha1($user.$pass) == $row['pword']) {
setcookie('temp', $row['username']);
session_start();
$_SESSION['login'] = 1;
$_SESSION['uname'] = $row['username'];
echo "success";
}
}
这是Jquery AJAX代码:
var username = $('#main_username').val();
var password = $('#main_pword').val();
$('.mainlogin').submit(function() {
$.ajax({
url: 'log.php',
type: 'POST',
data: {
user: username,
pass: password
},
success: function(response) {
if(response == 'success') {
window.location.reload();
} else {
$('.logerror').fadeIn(250);
}
}
});
return false;
});
我该如何检查从服务器返回的内容,如空白或成功。旅行有延期吗?谢谢
将其放入。它将在弹出窗口中提醒服务器的响应。
success: function(response) {
alert(response);
}
在PHP方面,尝试输出更多的东西——在if
语句中添加一个}else{
,它会返回一些有用的数据,例如
}else{
print("Post is: 'n");
print_r($_POST);
print("'nMySQL gave me: 'n");
print_r($row);
}
只要确保它工作后你不会把它留在里面!
查找:
- hash不同
- db字段不同
- 由于某些原因,数据库字段为空
- POST数据错误/字段名称错误
编辑:这是另一个问题:你的前四行实际上应该是:
$('.mainlogin').submit(function() {
var username = $('#main_username').val();
var password = $('#main_pword').val();
$.ajax({
您的代码在表单提交之前(加载时)获得值,此时这些值为空,因此将空字符串作为用户名和密码发送到服务器。
看看我在这里的答案中的代码:用户使用jQuery 检查可用性
你需要对你的响应进行json编码,Firefox也有Firebug,你可以用来查看你的ajax帖子和响应,chrome和IE都有开发工具
Safari也有开发工具:http://developer.apple.com/technologies/safari/developer-tools.html
检查控制台以查看AJAX 发生了什么