现在我正在我的网站上工作,ajax应检查用户是否存在于数据库中。而且我差不多完成但我遇到了一些问题,说它不可用。这是用户管理员在数据库中维护的方式,但不是数据库中的管理员用户,无论你会看到什么,并说“不可用”。
希望有一些人可以帮助我解决这个问题。
我已经进入了firefox并且看着firebug或者其他任何名字,我根本找不到任何错误!
我希望明确/制作 - 这就是它考虑用户是否存在于数据库中的原因?
现在和现在出现了什么问题 - 无论它说用户名“不可用”。我想帮助改变它,以便它是否存在
<tr>
<td>
<p>Brugernavn</p>
</td>
<td>
<input type="text" name="brugernavn" id="brugernavn" onblur="CheckUserName(this.value)"/>
</td>
<td>
<span id="availability_status"/></div>
</td>
</tr>
function CheckUserName(username){
if(username.length > 3){
var url = "ajax_check_username.php";
var params = "brugernavn="+ username +"&rand="+Math.random();
http = new XMLHttpRequest();
http.open("POST", url, true);
//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.send(params);
http.onreadystatechange = function () {
if(http.readyState == 4 && http.status == 200 ){
var val = parseInt(http.responseText);
var html=(val == 0) ? '<font color="Green">Tilgængelig</font>' : '<font color="red">Ikke tilgængelig</font>';
document.getElementById('availability_status').innerHTML = html;
}
}
}
else{
document.getElementById('availability_status').innerHTML = '<font color="#cc0000">Username too short</font>';
}
}
ajax_check_username.php 来自!
<?php
// bør ligge i en extern fil,bruges generalt til alle db opslag
function MySqlIConnOOP(){
$conn = new mysqli("localhost", "root", "", "test");
if (!$conn) {
echo 'Der opsod en fejl.';
exit();
}
$conn->set_charset("utf8");
return $conn;
}
// bør ligge i en extern fil, da man også bør checke det inden man opretter brugeren serverside, nogle kunne jo have pillet i JS
// retunerer 0 eller brugerens id (tal størrer end 0)
function IsUserCreated($mysqli, $username){
if($stmt = $mysqli->prepare("SELECT `id` FROM `bruger` WHERE `brugernavn` = ? ")){
/* bind parameters for markers */
$stmt->bind_param("s", $username);
$stmt->execute();
$stmt->bind_result($id);
$stmt->fetch();
$status = ($id >0) ? $id : 0;
$stmt->close();
}
else $status = -1;
return $status;
}
$conn=MySqlIConnOOP();
$brugernavn = $_POST["brugernavn"];
$status = IsUserCreated($conn, $brugernavn);
echo ($status >0)? 1 : $status;
?>
答案 0 :(得分:1)
这就是我的理解:
IsUserCreated PHP函数返回一个整数(如果找到用户名,则返回0)
CheckUserName JS函数检查返回值:
var val = parseInt(http.responseText);
var html=(val == 0) ? '<font color="Green">Tilgængelig</font>' : '<font color="red">Ikke tilgængelig</font>';
如果val == 0,“Tilgængelig”else(val!= 0)是“Ikketilgængelig”。
如果存在用户名,则会打印“Ikketilgængelig”。 如果用户名不存在,则会打印“Tilgængelig”。
这不是一个简单的标签编辑吗?
var html=(val > 0) ? '<font color="Green">Username exists</font>' : '<font color="Red">Username does not exist</font>';