2013-12-13 77 views
0

我做了更新all things you told me,這是我的結果。 全面更新:檢查從ajax/php返回的數據

$(document).ready(function(){ 
    $("#submit").submit(function(e){ 

e.preventDefault(); 

var username = $("#username").val(); 
var result; 
var request; 

if(username){ 
    request = $.ajax({ 
     url: 'check.php', 
     data: {data: JSON.stringify(username)}, 
     type: 'POST', 
     dataType: "json", 
     success: function (data) { 
      result = data; 
     } 
    }); 
} else { 
    alertify.error("ERROR"); 
} 

request.done(function() { 
    console.log(result); 
    if(request.result == 1) { 
     alert("yes") 
    } else { 
     alert("no") 
    } 
}); 
}); 
}); 

check.php:

$usernameChecker = new UsernameChecker($config); 

$data = $_POST['data']; 
$data = json_decode($data,true); 

if(!empty($data)) { 
    if ($usernameChecker->check_regex($data)) { 
     if($usernameChecker->check_length($data)) { 
      if (!$usernameChecker->check($data)) { 
       echo json_encode(array("error" => "Username already taken" , "result" => 0)); 
      } else { 
       echo json_encode(array("error" => "Username available" , "result" => 1)); 
      } 
     } else { 
      echo json_encode(array("error" => "Username too long" , "result" => 0)); 
     } 
    } else { 
     echo json_encode(array("error" => "Allowed symbols: a-z , A-Z , 1-9 and \"_\"" , "result" => 0)); 
    } 
} else { 
    echo json_encode(array("error" => "You forgot to type your username" , "result" => 0)); 
} 

這是我現在有,只是控制檯說:

「的結果是沒有定義」

SO:

當我提交空輸入時,我得到的請求是未定義的。

當我提交填充的輸入時,我得到警報「否」。而且這一部分:

「用戶名可用」

被標記爲紅色。

但在控制檯data.result是「1」?

+2

編輯看來,代碼已經這樣做,你只是不't做任何事情... – Jessica

+0

我編輯的代碼,看看底部,你會看到我的意思 – user3094856

回答

3

數據分配給另一個變量到$就功能

var username = $("#username").val(); 
var result; 
var request; 
if(username){ 
    request = $.ajax({ 
     url: 'check.php', 
     data: {data: JSON.stringify(username)}, 
     type: 'POST', 
     dataType: "json", 
     success: function (data) { 
      result = data; 
     } 
    }); 

} else { 
    alertify.error("ERROR");  
} 

這裏的外面用的是你

request.done(function() { 
    console.log(result.result); 
    if(result.result == 1) { 
     alert("yes") 
    } else { 
     alert("no") 
    } 
}); 
+0

啊好的謝謝 – user3094856

+0

如果我警告「結果」,我得到「未定義」,怎麼可以我解決這個問題? – user3094856

+0

成功功能可能不會觸發。你可以初始化結果... var result = -1;或者類似的事情,如果你得到了答案,那麼成功並不是解僱。您也可以使用.fail函數來查看是否觸發 – user602525