引发TypeError错误:无法读取未定义的属性“ toLowerCase”

时间:2020-07-28 11:20:39

标签: javascript jquery forms validation blur

在我问之前,我也在stackoverflow和其他站点上搜索了这个问题,其中大多数人提到您的“ this”并不指向您试图从中获取价值的事物。

这是因为它们中大多数都具有与目标元素不同的功能。但是,我的情况有所不同,但不能解决我的问题,

我的HTML代码是一种表单,其中一个字段是用户名并具有此代码,

<label for="username">Username</label>
                     <input type="text" id = "t_username" name="t_username" placeholder="Enter Teacher Username" value="" class="form-control" >
                     </div>
                     <span id = "availability"></span>

我的JQuery代码如下

 $('#t_username').blur(function()
      {
        var username = $(this).val(); 
        $.ajax({
          url: "action.php", 
          method: "POST", 
          data: {user_name: t_username}, 
          dataType: "text", 
          success:function(html)
          {
            $('#availability').html(html); 
          }
        });
      });

我的PHP代码如下,

if (isset ($_POST['username']))
{
  $user = $_POST['username'];
  if ($db->username_check($user) != 0) // $db is an object of Database class 
  {
    echo '<span class = "text-danger">Username already exists</span>';
  }
  else 
  {
        echo '<span class = "text-success">Username is available</span>';
  }

}

我的SQL函数是(在类中定义的)

public function username_check($user)
    {
      $sql = "SELECT * from tbl_teacher where username = :user";
      $stmt = $this->conn->prepare($sql);
      $stmt->execute(['user'=>$user]);
      $t_rows = $stmt->rowCount();
      return $t_rows;
    }

我尝试使用这两件事,但是仍然遇到相同的错误。有人可以帮我解决这个问题吗?

我已经尝试过(但是效果不佳)

var username = $(this.target).val();   -> This called an error of exceeded stack limit (because of some never ending recursive function I think) 

var username = $('#t_usernmae').val(); -> This did the same exceeded stack limit error 

我也尝试过更改功能,

$(#'t_username').on("blur", function(){.....*Everything here* ..... }); 

JS Fiddle of the code (I don't know how to create it, but I have shared a bit of code here)

1 个答案:

答案 0 :(得分:0)

您没有正确使用data传递。

您将需要使用username,但是您使用的是t_username,而不是undefinedmaximum call stack size exceeded错误将在控制台中抛出

将您的toLowerCase jQuery代码更改为此。一切都应该没事。

ajax