我目前正在尝试用PHP开发一个小网站来测试我的技能。 然而,当我决定为注册过程实施实时用户名可用性检查时,我发现自己陷入困境,因为我的JavaScript知识有点基础。
现在,当我在用户名字段中输入一些名称时,我只获得加载图像而没有其他内容。这就是我所做的:
我的login.php页面存储在/ views文件夹中:
<section>
<div>
<form action="?action=login" method="post">
<input type="text" placeholder="username" name="username" id="username" onkeypress ="check()">
<span id="usernameStatus"></span>
</form>
</div>
</section>
我的js文件存储在/ views / js:
中function check () {
var status = document.getElementById('usernameStatus');
var u = document.getElementById('username').value;
if(u != ""){
status.innerHTML = '<img src="views/img/wait.gif" alt="" height="20" />';
var hr = new XMLHttpRequest();
hr.open("POST", "../login.php", true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
status.innerHTML = hr.responseText;
}
}
var v = "checkName="+u;
hr.send(v);
}
}
最后将loginController.php存储在/ controllers:
中 public function run() {
if(!empty($_POST["checkName"])){
$name= htmlentities($_POST["checkName"]);
if(Db::getInstance()->username_ok($name)){
echo ("<strong>" . $name . "</strong> unavailable");
}
else{
echo ("<strong>" . $name . "</strong> available");
}
}
require_once('views/login.php');
}
有人可以解释一下我做错了什么吗?谢谢!
答案 0 :(得分:0)
这里有一个tutorial可以帮助你,它是一个PHP和jquery的实时用户名检查器。
答案 1 :(得分:0)
我认为问题出在文件名上。
从你的问题来看,我猜文件结构是
root
|-- controllers
| `-- loginController.php
`-- views
`-- js
`-- script.js
在views/js/scriptname.js
文件中的JavaScript代码中,
hr.open("POST", "../login.php", true);
请求将发送到文件login.php
。
但是,正如您所提到的,服务器端php脚本的路径是/controllers/loginController.php
。
根据我的说法,JavaScript代码应该如下:
hr.open("POST", "controllers/loginController.php", true);