當我第一次點擊提交按鈕時,這些代碼有效。但是,當我第二次點擊按鈕時,即使電子郵件和密碼值爲真,也不會發生任何事情,並且用戶無法登錄。但是如果我第一次寫出真實值,它就可以工作,用戶可以登錄。所以我覺得這個問題的原因是關於「返回假」的原因。短語。但如果我刪除返回false;短語,表單帖子和ajax代碼變得毫無用處。我必須避免沒有Ajax的發佈。 jQuery的:jQuery ajax第二貼
<script>
$(document).ready(function(){
$('#submit-btn').click(function(){
var email = $('#email').val();
email = $.trim(email);
var password = $('#password').val();
password = $.trim(password);
if(email == "") {
$('#email').css({
"background-color": "#FF7070"
});
$('#box1').css({
"visibility": "visible"
});
return false;
}else if(password == "") {
$('#password').css({
"background-color": "#FF7070"
});
$('#box2').css({
"visibility": "visible"
});
return false;
}else{
$.ajax({
type: "POST",
url: "ajax.php",
data: $('#loginform').serialize(),
timeout: 5000,
success: function(c) {
if(c == "no") {
$('#box3').css({
"visibility": "visible"
});
return false;
} else if (c == "ok") {
window.location.href = "homepage.php";
}
},
error: function(a, b) {
if (b == "timeout") {
alert("Error: #101");
}
},
statusCode: {
404: function(){
alert("Error: #102")
}
}
});
}
return false;
})
});
</script>
HTML:
<form name="loginform" id="loginform" method="post" action="">
<div class="field">
<input type="text" maxlength="40" id="email" name="email" placeholder="E-mail">
</div>
<div class="field">
<input type="password" id="password" name="password" placeholder="Password" autocomplete="off">
</div>
<div class="field">
<input type="submit" id="submit-btn" value="Log in">
</div>
<div class="keep-login">
<label for="remember">
<input type="checkbox" name="remember" id="remember" checked="checked">Remember me
</label>
<span><a href="#">Forgot password?</a></span>
</div>
</form>
PHP:
if(Input::exists()) {
if(Token::check(Input::get('token'))) {
$validate = new Validate();
$validation = $validate->check($_POST, array(
'email' => array('required' => true),
'password' => array('required' => true)
));
if($validation->passed()) {
$user = new User();
$remember = (Input::get('remember') === 'on') ? true : false;
$login = $user->login(Input::get('email'), Input::get('password'), $remember);
if($login) {
echo "ok";
} else {
echo "no";
}
} else {
echo "no";
}
}
}
你是什麼意思,「沒有任何反應」? ajax請求不執行? – Bergi 2014-09-01 19:42:11
它不請求執行。 – nijamitsu 2014-09-01 19:52:21
那麼錯誤是什麼?你有例外嗎?它甚至不會進入'click'處理程序嗎?它是否進入了「email ==」「'或'password ==」「'分支,即使它沒有分支?請做一些調試。 – Bergi 2014-09-01 19:58:20