2017-03-16 176 views
0

我只是想检查用户名是否已经存在,基本的想法是,当表单发送时,我的ajax代码将连接到checkUsername.php,并且checkUsername.php将会去我的数据库并检查用户名已经存在,并返回一个跨度。为什么我的ajax代码没有运行?

$.ajax({ 
     url: "checkUsername.php", 
     type: "post", 
     data: {"usernameCheck": v1}, 
     dataType:"text", 
     success:function(data){ 
    alert("system avaliable!!"); 
    if($("#status-not-available").val(data) == "no"){ 
     $('#username').css({'border' : '4px solid red'}); 
     checkUsername = false; 
    } 
    else{ 
     $('#username').css({'border' : '4px solid white'}); 
    } 
     }, 
     fail:function(data){ 
    alert("system not avaliable"); 
     }, 
    }); 

PHP:

$database = new SQLite3('myDatabase.db'); //setup connection 
$usernameCheck = $_POST['usernameCheck']; //get the username they input 
$stmt = $database->prepare("SELECT * FROM users WHERE username = :usernameCheck"); 
$stmt->bindValue(':usernameCheck',$usernameCheck,SQLite3_TEXT); 
$row = $stmt->execute()->fetchArray(); 

if(isset($row['username'])){ 
    echo "<span class='status-not-available'>no</span>"; 
} 
else{ 
    echo "<span class='status-not-available'>yes</span>"; 
} 
+0

你有什么错误或什么? – Mazz

+0

_什么东西必须发生......? – Tom

+0

v1是什么?在请求的正文中? –

回答

0

阿贾克斯的dataType:"text"意味着你要。但你是返回html为响应也是这个htmlDOM加载返回响应,text,这样会导致错误。

JS

$.ajax({ 
     url: "checkUsername.php", 
     type: "post", 
     data: {"usernameCheck": v1}, 
     dataType:"text", 
     success:function(data){ 
    alert("system avaliable!!"); 
    if(data == "no"){ 
     $('#username').css({'border' : '4px solid red'}); 
     checkUsername = false; 
    } 
    else{ 
     $('#username').css({'border' : '4px solid white'}); 
    } 
     }, 
     fail:function(data){ 
    alert("system not avaliable"); 
     }, 
    }); 

PHP

$database = new SQLite3('myDatabase.db'); //setup connection 
$usernameCheck = $_POST['usernameCheck']; //get the username they input 
$stmt = $database->prepare("SELECT * FROM users WHERE username = :usernameCheck"); 
$stmt->bindValue(':usernameCheck',$usernameCheck,SQLite3_TEXT); 
$row = $stmt->execute()->fetchArray(); 
if(isset($row['username'])){ 
echo "no";//just send response as text rather than html 
} 
else{ 
echo "yes"; 
} 
0

你有ID status-not-available不是DOM元素,这是你的Ajax响应,它是一个字符串,所以,简单地只发送yesno从阿贾克斯和相应

if(data == "no"){