【问题标题】:ajax not sending data to specified pageajax不向指定页面发送数据
【发布时间】: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


【解决方案1】:

也许您可以尝试使用以下 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);
        }
   })
}

【讨论】:

  • 好的,使用这段代码,我得到了弹出的警报,我得到

    用户名:

    所以用户名数据仍然没有通过:S
  • 你可以使用标签..这只是一个例子......你可以将警报(数据)更改为此文档。getElementById('unamestatus').innerHTML = data;或者你可以像这样使用 jquery $('#unamestatus').html(data)
猜你喜欢
  • 1970-01-01
  • 2016-03-09
  • 1970-01-01
  • 2014-01-11
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
相关资源
最近更新 更多