简体   繁体   English

ajax-检查用户名是否存在,如果存在则返回消息

[英]ajax - check if a username exists + return message if it does

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. 我试图检查是否需要用户所需的用户名,而不必发送表单,基本上是用户名字段的onBlur。

I'm having some trouble and have a few questions. 我遇到了麻烦,有几个问题。

I have my input field plus js: 我有我的输入字段加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">

and my check-db.php file: 和我的check-db.php文件:

$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();

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? 首先:即时通讯从我的PHP代码中得到一个错误,“变量数量与准备好的语句中的参数数量不匹配”,这让我有点困惑? I have 1 variable and 1 peramater, don't i? 我有1个变数和1个有志者,不是吗?

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? 因此,如果使用了用户名,我可以这样说,或者如果可用,可以这样说?

thanks! 谢谢!

On the server size (PHP in your case), simply echo the things you want to pass to the client side (Javascript) like this : 在服务器大小(以您的情况为PHP)上,只需将要传递给客户端(Javascript)的内容简单地echo显如下:

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);
    }
});

try 尝试

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.'); 
        }   
    });    
} 

发送数据时出错,您应该将JS对象作为数据发送,如下所示:

data: { desiredUsername: desiredUsername },

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM