在我问之前,我也在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)
答案 0 :(得分:0)
您没有正确使用data
传递。
您将需要使用username
,但是您使用的是t_username
,而不是undefined
或maximum call stack size exceeded
错误将在控制台中抛出
将您的toLowerCase
jQuery代码更改为此。一切都应该没事。
ajax