2014-10-01 113 views
-4

所以我通常很好地弄清楚這些類型的問題,但是這個讓我完全難住,因爲一直試圖修復大約6個小時。jquery php ajax用戶名檢查功能

我有一個Web窗體,其中包含使用jQuery腳本和PHP腳本的用戶名檢查。當我第一次寫代碼時它工作的很好,現在已經完全停止工作(不知道爲什麼)。 PHP腳本是一個非常標準的mysqli查詢,它返回numrows,然後我回聲1或0到頁面取決於如果找到一個結果。這個腳本工作正常,並已獨立進行測試,如果未找到結果,則回顯1,如果找到結果,則返回0。

在jquery腳本中我有一個最小值檢查和一個沒有值檢查,這兩個工作正常。然後我的阿賈克斯調用,我收到成功的結果:函數(數據)。這也已經通過在屏幕上打印結果(數據)而獨立地進行了測試,並且當沒有記錄時在屏幕上打印1而在屏幕上顯示0時如果發現記錄,所以我知道一切都正常工作與發送的數據,我期待的結果。

所以我唯一剩下的就是我的if語句必須有一個問題,以及它如何處理返回的數據,因爲即使條件滿足時它總是跳到else。 if語句的唯一工作方式是當我自己設置變量並運行腳本時。長話短說,除了最終的if語句之外,一切都可以正常工作,無論如何,它總是跳轉到其他語句,並且說即使當我知道它沒有時,用戶名仍然可用。

我正在測試xampp。這也可能是一個問題嗎?

任何想法?提前致謝!!!

下面是代碼:JavaScript的

$(document).ready(function(){ 


    //the min chars for username 
     var usermin_chars = 6; 

     //result texts 
     var checking_html = 'Checking...'; 

//when button is clicked 
    $('#username').blur(function(){ 
     var usernameVal = $("#username").val(); 
     if (usernameVal == '') { 
     $("#username_result").html('<span class="error">Please enter a username!</span>'); 
     $('#username').removeClass(); 
     $('#username').addClass("form_error"); 
    } 
     //run the character number check 
     else if($('#username').val().length < usermin_chars){ 
      //if it's bellow the minimum show characters_error text ' 
      $('#username_result').html('<span class="error">Username must contain at least 6 characters!</span>'); 
      $('#username').removeClass(); 
      $('#username').addClass("form_error"); 
     }else{ 
      //get the username 
    var username = $('#username').val(); 

    $.ajax({ 
       type:"post", 
       url:"checkUsername.php", 
       data:"username="+username, 
        success:function(data){ 
        if(data==0){$("#usename_result").html("Username already in use! Please choose another username."); 
        $('#username').removeClass(); 
        $('#username').addClass("form_error"); 
        } 
        else{$("#username_result").html("Username available"); 
        $('#username_result').html('<span class="ok"><img src="../images/imgs/available.png" width="20" height="20" margin-left="5" alt="tick"></span>'); 
        $('#username').removeClass(); 
        $('#username').addClass("form_ok"); 
        } 
       } 
      }); 

     } 
    }); 

}); 
+0

小提琴或沒有東西; p – 2014-10-01 12:11:55

+0

你有什麼試圖調試?這裏沒有什麼魔力,如果它進入èlse'語句,它意味着'data!= 0'。現在通過網絡檢查器檢查您的回報,看看它是服務器發送錯誤還是客戶端代碼失敗。我想這是你的服務器,並且很可能是你的查詢... – 2014-10-01 12:14:36

+0

你在'checkUsername.php'中的代碼是錯誤的 – 2014-10-01 12:16:38

回答

0

行,所以我找到了答案。隨着網站接近完成,我瀏覽了所有網頁,並確保每個網頁都有一個SEO的標題,包括checkUser頁面。頁面標題正在通過數據發送並混淆if語句。當我測試功能時,如果我將數據放在一個範圍內,它只顯示0或1,但在螢火蟲中查看它顯示響應爲0或1加上頁面標題。感謝那些看過它的人。