2015-03-02 44 views
1

對不起,如果這是重複的。我搜查了很多,但我找不到解決我的問題的方法。使用Ajax檢查登錄表單

我使用CMS系統,內置的登錄,但我想送他們到的login.php命名 最後登錄文件前檢查登錄細節我有4個文件:

  • login_form.html
  • main.js
  • check_login.php
  • 的login.php - 建立登錄腳本,我沒有做任何與此文件

這是我login_form.html

<div id="login-main" title="Close"> 
    <div id="login-form" title=""> 
     <span id="span_close" title="Close">x</span> 
     <form class="login-box" id="login-form-final" action="http://localhost/ubytovanie-slovakia.sk/account/login.php" method="post"> 
      <p>Login</p> 
      <input type="hidden" name="username_fieldname" value="username" /> 
      <input type="hidden" name="password_fieldname" value="password" /> 
      <p id="login_err"></p> 
      <div class="login-line"> 
       <input type="text" name="username" maxlength="30"/> 
       <label>Loginname</label> 
      </div> 
      <div class="login-line-pass"> 
       <input type="password" name="password" maxlength="30"/> 
       <label>Password (<a href="#" id="show_lost_pass">Forgot password?</a>)</label> 
      </div> 
      <div class="login-checkbox-line"> 
       <input type="checkbox" name="remember" id="remember" value="true"/> 
       <label for="remember"><span></span>Remember</label> 
      </div> 
      <div class="login-submit-line"> 
       <input type="submit" name="submit" id="login-submit" value="Login" /> 
      </div> 
     </form> 
    </div> 
</div> 

這裏是我的JS代碼:

$('#login-main').live("click",function(e){ 
     var login_form = $('#login-main').find('*'); 
     if(!($(e.target).is(login_form))||$(e.target).is('#login-form #span_close')){ 
      $('#login-main').fadeOut(); 
     } 
     if($(e.target).is('#login-form #login-submit')){ 
      var login_name = $("#login-form .login-line input").val(); 
      var login_pwd = $("#login-form .login-line-pass input").val(); 
      $.post(WB_URL+"/include/ajax/check_login.php", { login_name: login_name, pwd: login_pwd }).done(function(error) { 
       switch(error){ 
        case '0': 
         $("#login-form-final").submit(function(){ 
          return true; 
          alert("submit ready"); 
         }); 
         break; 
        case '1': 
         $('#login_err').html('Loginname is empty!'); 
         break; 
        case '2': 
         $('#login_err').html('Password is empty!'); 
         break; 
        case '3': 
         $('#login_err').html('Wrong loginname or password!'); 
         break; 
        case '4': 
         $('#login_err').html('Random error!'); 
         break; 
       } 
      }); 
     } 
     return false; 
    }); 

,這裏是check_login.php

require_once('../../config.php'); 
require_once('../../framework/class.database.php'); 

if(isset($_POST['login_name'])&& isset($_POST['pwd'])){ 
    if($_POST['login_name'] == ''){ 
     $error = '1'; 
    }else if($_POST['pwd'] == ''){ 
     $error = '2'; 
    }else{ 
     $login_name = test_input($_POST['login_name']); 
     $pwd_md5 = md5($_POST['pwd']); 
     $q = "SELECT * FROM `".TABLE_PREFIX."users` WHERE `username`='".$login_name."' AND `password`='".$pwd_md5."'"; 
     $res = $database->query($q); 
     if($res->numRows()<1){ 
      $error = '3'; 
     }else{ 
      $error = '0'; 
     } 
    } 
}else{ 
    $error = '4'; 
} 
echo $error; 

function test_input($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 

問題:

一切除非輸入良好的登錄名和良好的p,否則工作正常assword。表單不提交。它寫了一個警告文本「提交就緒」,所以案例:'0'工作正常,但.submit函數沒有。有人能幫助我嗎?

+0

求助 在login_form.html中有一個輸入類型提交name =「submit」。 這就是問題:) – 2015-03-12 07:18:49

回答

1

我認爲問題是如果案例是0你想提交表單,在這種情況下,你應該使用$(「#login-form-final」)。但是你正在使用提交處理程序。它告訴引擎如果從表單提交的地方執行某些操作。我眨眼你不想要的東西。

還有一件事是你在返回後使用了一個語句,它永遠不會執行。

+0

在此版本的代碼之前,我有: case'0': $(「#login-form-final」)。submit(); 休息; 它沒有工作。這是同樣的問題。 我在哪裏有聲明下午返回? :o – 2015-03-02 15:44:31