【发布时间】:2014-03-18 15:32:15
【问题描述】:
我一直在关注一个教程,它的人提供了代码供你使用,所以我尝试使用代码并逐行浏览它,但由于我对 ajax 几乎一无所知,我似乎无法理解为什么它没有将数据传递到指定的页面,并且由于数据没有通过 mysqli 查询和所有其他事情的过程传递,它们不会因为数据没有被传递而开始发生。
数据是表单的一部分,它是根据数据库检查用户名以检查可用性,因此表单中数据的代码是...
<form name="signupform" id="signupform" onsubmit="return false;">
<div>Username: </div>
<input id="username" type="text" onblur="checkusername()" onkeyup="restrict('username')" maxlength="16">
<span id="unamestatus"></span>
<div>Email Address:</div>
<input id="email" type="text" onfocus="emptyElement('status')" onkeyup="restrict('email')" maxlength="88">...
等等...提供的js是..
function restrict(elem){
var tf = _(elem);
var rx = new RegExp;
if(elem == "email"){
rx = /[' "]/gi;
} else if(elem == "username"){
rx = /[^a-z0-9]/gi;
}
tf.value = tf.value.replace(rx, "");
}
function emptyElement(x){
_(x).innerHTML = "";
}
function checkusername(){
var u = _("username").value;
if(u != ""){
_("unamestatus").innerHTML = 'checking ...';
var ajax = ajaxObj("POST", "signupfunc.php");
ajax.onreadystatechange = function() {
if(ajaxReturn(ajax) == true) {
_("unamestatus").innerHTML = ajax.responseText;
}
}
ajax.send("usernamecheck="+u);
}
据我了解,var u= _("username").value 是 id=username 的输入值,如果 username 不为空则首先带在启动称为 ajax 的 var 之前启动 checking...,它开始 POST 到页面的过程,signupfunc.php,然后我不确定下一个有点,但我认为这意味着如果某些东西从 var ajax 返回,那么它将响应返回放在 unamestatus div 中?然后最后一点按它说的那样做? var ajax 将 usernamecheck 的值作为用户名发送......但它没有将数据发送到指定页面......有人可以指出我做错了什么建议如何解决这个问题?
这里需要的是与上述代码相关的指定页面signupfunc.php上的代码..
//Ajax calls this NAME CHECK code to execute
if(isset($_POST["usernamecheck"])){
$username = preg_replace('#[^a-z0-9]#i', '', $_POST['usernamecheck']);
$sql = "SELECT id FROM users WHERE username='$username' LIMIT 1";
$query = mysqli_query($db, $sql);
$uname_check = mysqli_num_rows($query);
if (strlen($username) < 3 || strlen($username) > 16) {
echo '<strong style="color:#F00;">3 - 16 characters please</strong>';
exit();
}
if (is_numeric($username[0])) {
echo '<strong style="color:#F00;">Usernames must begin with a letter</strong>';
exit();
}
if ($uname_check < 1) {
echo '<strong style="color:#009900;">' . $username . ' is OK</strong>';
exit();
} else {
echo '<strong style="color:#F00;">' . $username . ' is taken</strong>';
exit();
}
}
【问题讨论】:
-
您需要在浏览器的控制台中查看请求/响应。请求中的任何错误都会显示在那里,并允许您开始进行故障排除。
-
我似乎没有看到任何错误,但老实说,我不确定我在寻找什么
标签: javascript php jquery ajax