gpt4 book ai didi

javascript - 使用 AJAX 检查用户名可用性

转载 作者:行者123 更新时间:2023-11-28 07:11:44 24 4
gpt4 key购买 nike

我目前正在尝试用 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');
}

有人可以解释一下我做错了什么吗?谢谢!

最佳答案

我认为问题出在文件名上。

根据你的问题,我猜文件结构是

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);

关于javascript - 使用 AJAX 检查用户名可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31233104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com