ajax不向特定页面发送数据

时间:2014-03-18 15:32:15

标签: javascript php jquery ajax

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

1 个答案:

答案 0 :(得分: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);
        }
   })
}