我只是想检查用户名是否已经存在,基本的想法是,当表单发送时,我的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>";
}
答案 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发送yes
或no
并相应地
if(data == "no"){