我试着去检查是否已被占用用户想要输入用户名而不必发送用户名字段的形式,基本的onblur。
im trying to check if a username a user wants is already taken without having to send the form, basically onBlur of the username field.
我有一些麻烦,有几个问题。
I'm having some trouble and have a few questions.
我有我的输入框加上JS:
I have my input field plus js:
<script src="js/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#username').on('blur', checkdb);
function checkdb(){
var desiredUsername = $(this).val();
$.ajaxSetup({
url: "check-db.php",
type: "POST",
});
$.ajax({
data: 'desiredUsername='+desiredUsername,
success: function (msg) {
alert (msg);},
error: function (XMLHttpRequest, textStatus, errorThrown){
alert('Error submitting request.');
}
});
}
});
</script>
<input type="text" name="username" id="username">
和我签db.php的文件:
and my check-db.php file:
$mysqli = mysqli_connect("localhost","connection info");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
$desiredUsername = $_POST['desiredUsername'];
$stmt = $mysqli->prepare("SELECT * FROM users WHERE username = '?' ");
$stmt->bind_param('s', $desiredUsername);
$stmt->execute();
首先:我可是从我的PHP code得到一个错误,变量数犯规的$ P $参数匹配数量ppared声明,其中我是一个有点困惑?我有1个变量和1 peramater,不是吗?
firstly: im getting an error from my php code, 'number of variables doesnt match number of parameters in prepared statement', which im a bit confused about? I have 1 variable and 1 peramater, don't i?
那么,一旦这实际上是工作,我怎么发送邮件/变回输入页面?因此,如果用户名是采取我可以这么说,如果其可用这样说呢?
then, once this is actually working, how do I send a message/ variable back to the input page? so if the username is taken I can say so, or if its available say so?
谢谢!
在服务器大小(PHP你的情况),只需回声
要传递的事物客户端(JavaScript)是这样的:
On the server size (PHP in your case), simply echo
the things you want to pass to the client side (Javascript) like this :
echo json_encode($datas); //can be array or whatever
然后在客户端:
Then on the Client side :
$.ajax({
method: 'POST',
dataType:'json',
data: {'username' : desiredUsername}, //then getting $_POST['username']
success: function(datas) {
console.log(datas); //Your previous data from the server side
},
error: function(XMLHttpRequest, textStatus, errorThrown){
console.log(textStatus);
}
});