2

我试图检查用户想要的用户名是否已经被使用,而无需发送表单,基本上是用户名字段的 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 个参数,不是吗?

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

谢谢!

4

3 回答 3

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);
    }
});
于 2013-02-12T19:38:36.037 回答
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.'); 
        }   
    });    
} 
于 2013-02-12T19:35:47.040 回答
0

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

data: { desiredUsername: desiredUsername },
于 2013-02-12T19:37:20.423 回答