2014-09-27 47 views
0

這裏是我的Ajax代碼如下Ajax調用

$('.username-check').on('click', function() { 
    //console.log('You clicked'); 
    alert(username); 
    var username = $('.username-target'), 
     lastname = $('.lastname-target'), 
     feedback = $('.username-feedback'); 

    function changeFeednackText(text){ feedback.text(text); } 

    function couldNotCheck(){ changeFeednackText('Could not check at this time'); } 

    $.ajax({ 
     url: 'check/username.php', 
     type: 'get', 
     data: { 
      username: username.val(), 
      lastname: lastname.val() 
     }, 
     dataType: 'json', 
     success: function(data){ 
      if(data.available !== undefined){ 
       if(data.available === true){ 
        changeFeednackText('That username is available.'); 
       }else{ 
        changeFeednackText('Sorry, that username is not available.'); 
       } 
      }else{ 
       couldNotCheck(); 
      } 
     }, 
     error: function(){ 
      couldNotCheck(); 
     } 
    }); 
}); 

我的HTML代碼

<form action="signup.php" method="post" autocomplete="off"> 
    <div> 
     <label for="username">First Name<input type="text" name="username" id="username" class="username-target"></label><br /> 
     <label for="lastname">Last Name<input type="text" name="lastname" id="lastname" class="lastname-target"></label><br /> 
     <a href="javascript:;" class="username-check">Check username</a> 
    </div> 
    <div class="username-feedback"></div> 
    <div><input type="submit" value="Check"></div> 
</form> 

我的PHP也低於

header('Content-Type: application/json'); 
$username = (isset($_GET['username'])) ? htmlspecialchars($_GET['username']) : null; 
$lastname = (isset($_GET['lastname'])) ? htmlspecialchars($_GET['lastname']) : null; 

$available = true; 
if($username == 'bar' && $lastname == 'foo'){ 
// if($username == 'bar'){ 
    $available = false; 
} 
$arr = array('username' => $username . $lastname, 'available' => $available); 
echo json_encode($arr); 

上面的代碼工作正常並返回false如果我使用if語句像這樣if($username == 'bar'){但是當我用來檢查再次t兩個值,例如if($username == 'bar' && $lastname == 'foo'){它總是返回true

請注意,我試過foo和bar分別爲usernamelastname以獲得false回電但沒有成功。不知道這裏有什麼問題,但我希望你們中的任何人都能發現錯誤並幫助我。你有什麼想法嗎?

+1

你有沒有機會通過ajax調用,使用螢火蟲或其他東西來檢查發送到你的php的數據? – Satya 2014-09-27 23:27:23

+0

哦謝謝@Satya ...現在沒有檢查它,但它只發送用戶名...但這是我第一次嘗試使用ajax,所以如果你能看到任何問題,請讓我知道。 – Amjad 2014-09-27 23:30:20

+0

_...我試過foo和酒吧作爲用戶名和姓氏..._ - 不應該是富作爲姓氏和酒吧作爲用戶名?否則,「真實」是真實的。 – 2014-09-27 23:30:22

回答

1

嘗試改變:

if(data.available !== undefined){ 

if(typeof(data.available) != "undefined") { 

在你的更迭功能。

+0

感謝您的努力@Axel Amthor – Amjad 2014-09-27 23:43:40

+0

真的沒什麼大不了的,但是您應該總是在javascript中使用嚴格的等式比較......總是。 – 2014-09-27 23:47:01

+0

@RyanWheale - 只有當你真的想要比較嚴格,對於typeof它不是一個問題,因爲它總是返回一個字符串...總是,我會更關心typeof不是一個函數。 – adeneo 2014-09-28 00:34:27