【发布时间】:2013-12-14 19:17:58
【问题描述】:
您好,我正在使用 AJAX 将用户名和密码传递给 php 页面,一旦识别出用户名和密码存在,我想加载页面 main.html。
在我提交表单的那一刻,我得到了真正的响应,这显示在错误消息标签位置的表单上方,但它没有加载 main.html 页面。
我是新手,所以不太确定哪里出了问题,我已经在 chrome web 开发人员控制台中运行了代码,但没有显示任何问题,希望有人能指出我正确的方向。
页面网址:http://goo.gl/7QGrnr
HTML 代码
<label id="errorMessage"></label>
<form name="login" class="login">
<input name="username" type="text" placeholder="Username"/>
<input name="password" type="text" placeholder="Password"/>
<input type="submit" name="login" class="login" value="Login" id="orange"/>
</form>
AJAX 代码
$(document).ready(function(){
$('form.login').submit(function () {
var username = $("[name='username']").val();
var password = $("[name='password']").val()
// ...
$.ajax({
type: "POST",
url: "login.php",
data: "username="+ username +"& password="+ password,
success: function(response){
if(response == 'true') {
window.location.href='main.html';
}
else {
$("#errorMessage").html(response);
}
}
});
return false;
});
});
PHP 代码
$username = mysql_real_escape_string($_POST['username']);
$password = md5(mysql_real_escape_string($_POST['password']));
if(!empty($username) && !empty($password))
{
$result = mysql_query("SELECT * FROM users WHERE username='$username' and password ='5d503cf3064551d1bae24d5e2aaedbd9'");
$num_rows01 = mysql_num_rows($result);
if($num_rows01 === 1)
{
echo 'true';
}
else
{
echo 'false';
}
}
【问题讨论】:
-
如果
errorMessage中显示了某些内容,那么肯定不是true。console.log(response)并检查您收到的内容 -
MySQL 函数已弃用,您应该使用 mysqli 或 PDO。 MD5 几乎不再值得使用,您应该根据您的 PHP 版本使用更现代的散列函数,但请查看 Bcrypt。现在您的问题是,如果您看到错误消息 div,那么您的响应不是“true”,console.log(response);在你的成功处理程序中找出发生了什么。您的 PHP 中可能存在解析错误,或者您需要在 Ajax 调用中设置 dataType: "text"。
-
建议在您的 AJAX 调用中添加
error部分。这样,您可以在某种程度上查看您的代码可能出了什么问题。在success函数之后使用以下代码:error: function(xhr, status, error) { console.log(error); }让我知道你在这里遇到什么错误。 -
你的意思是像这样成功吗:function(response){ error: function(xhr, status, error) { console.log(error); } if(response == 'true')