首页 文章

ajax不向指定页面发送数据

提问于
浏览
0

我一直在关注一个教程,并且这个人提供了代码供你使用,所以我尝试使用代码并逐行浏览,但因为我几乎不知道任何关于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之前,它开始进行发布到页面,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();
    }
}

1 回答

  • 0

    也许你可以尝试使用下面的jquery ajax代码更改你的代码:

    function checkusername(){
    var u = _("username").value;
    if(u != ""){
    _("unamestatus").innerHTML = 'checking ...';
    
        $.ajax({
            url : "signupfunc.php",
            type : "POST",
            data : "usernamecheck="+u,
            dataType : 'text',
            success: function(data,textStatus,jqXHR){
                alert(data);
            }
       })
    }
    

相关问题