【发布时间】:2015-09-22 20:20:38
【问题描述】:
我目前正在尝试用 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');
}
谁能解释我做错了什么?谢谢!
【问题讨论】:
-
是什么触发了您的 JavaScript?您是否在输入字段上注册了事件侦听器?
-
您是否在浏览器的网络查看器中检查了 AJAX 操作?查看请求参数、响应代码和响应文本以帮助您进行调试。
-
您好,感谢您的回复。在调试中我有
"Failed to load resource: the server responded with a status of 404 (Not Found)" and "Failed to load resource: net::ERR_CACHE_MISS".我认为问题是js文件没有连接loginController.php,但我不知道如何修复它。 -
通过更改控制器/loginController.php 的路径修复了 404 错误
标签: javascript php model-view-controller