此代码位于表单的onsubmit
事件触发的JavaScript函数中。如果选择的用户名已存在,则提醒用户
var username = document.register.username.value;
var phpUsernameFree = <?php
$username = "<script>document.write(username)</script>";
$resultTempUsers = mysql_query("SELECT * FROM tempUsers WHERE username = '$username' ") or die(mysql_error());
if(mysql_num_rows($resultTempUsers) == 0){
echo 1;
};
?> ;
if(phpUsernameFree == 0){
toggleNew('usernameAlreadyExists', 1);
usernameCounter = 1;
}
我希望如果用户名已经存在于数据库中,会显示一个窗口,告诉用户用户名已经存在。
我已经尝试删除所有的php代码,并简单地用'echo 1'或'echo 0'替换它,并且工作,所以我知道代码执行。
我认为尝试从数据库中读取信息存在问题。
编辑:
好吧,我已经试过与阿贾克斯这样做,至今没有工作。我下载了jQuery的,现在我尝试这种代码:
usernameTaken = checkUserExistence(username, 'username');
if(usernameTaken == 1){
toggleNew('usernameAlreadyExists', 1);
usernameCounter = 1;
}
function checkUserExistence(str, type){
var dataString = 'str=' + str + '&type=' + type;
if($.trim(str).length>0 && $.trim(type).length>0){
$.ajax({
type: "POST",
url: "existance.php",
data: dataString,
cache: false,
beforeSend: function(){ $("#submit").val('Sending...');},
success: function(data){
if(data){
return 1;
}else{
return 0;
}
}
});
}
return false;
}
我existance.php看起来是这样的:
<?php
*include connection to database here*
$data = $_POST["data"];
$type = $_POST["type"];
$resultUsers = mysql_query("SELECT * FROM users WHERE username = '$data' ") or die(mysql_error());
if(mysql_num_rows($resultUsers) == 1){
echo 1;
}
?>
目前什么时,使用此代码是,当我按下提交按钮会发生,那么值会更改为'正在发送...',就像beforeSend属性一样,但是没有其他事情发生。
看看ajax;你试图让浏览器执行这个逻辑,它不会发生。你需要一些东西来与服务器连接。 [你需要知道的一切都在这里](http://stackoverflow.com/questions/8567114/how-to-make-an-ajax-call-without-jquery) – Ohgodwhy
它会更简单,如果你会使用jQuery ajax函数...你可以参考这个例子的代码http://www.9lessons.info/2014/07/ajax-php-login-page.html –