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

时间:2013-02-12 19:31:01

标签: php javascript ajax

我试图检查用户想要的用户名是否已经被取走而不必发送表单,基本上是用户名字段的onBlur。

我遇到了一些麻烦并且有几个问题。

我的输入字段加上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">

和我的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();

首先:我从我的PHP代码中得到一个错误,'变量数量与预备语句中的参数数量不匹配',这有点让人困惑?我有1个变量和1个peramater,不是吗?

然后,一旦实际工作,如何将消息/变量发送回输入页面?所以,如果使用了用户名,我可以这样说,或者如果可用的话,那么这样说呢?

谢谢!

3 个答案:

答案 0 :(得分:1)

在服务器大小(在你的情况下为PHP)上,只需要echo你要传递给客户端的东西(Javascript),如下所示:

echo json_encode($datas); //can be array or whatever

然后在客户端:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

data: { desiredUsername: desiredUsername },