为什么我的ajax代码没有运行?

时间:2017-03-16 12:50:23

标签: php jquery html ajax

我只是想检查用户名是否已经存在,基本的想法是,当表单发送时,我的ajax代码将连接到checkUsername.php,checkUsername.php将转到我的数据库并检查是否用户名已存在,并返回一个范围。

$.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>";
}

2 个答案:

答案 0 :(得分:0)

Ajax的dataType:"text"表示您希望以text的形式返回回复。但是您回复html作为回复,html未加载DOM 1}}这样会导致错误。

<强> 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";
 }

答案 1 :(得分:0)

您没有ID为status-not-available的dom元素,它是您的ajax响应,而且是一个字符串,因此只需从ajax发送yesno并相应地

if(data == "no"){