我在 HTML 页面中有以下脚本:
<script>
function Test(){
alert("i got here");
var username = document.registration_form.username.value;
alert(username);
$.post("checkname.php", { name: username }, function(data) {
alert("and here");
alert(data);
if (data = "0"){
alert('That username is already in use, please choose another');
return false;
};
if (data = "1") {
return true;
};
});
};
</script>
如果用户名已在我的数据库中,我正在尝试让函数测试返回 true 或 false。
checkname.php 包含以下内容:
<?
$host="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$myusername=$_POST['name'];
$sql="SELECT * FROM members WHERE username='".$myusername."'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count >= 1){
echo "0";
}
else {
echo "1";
}
?>
我尝试过对名称进行硬编码并运行 PHP,效果很好。
出于某种原因,尽管当我运行 Test() 时,前两个警报正常运行,显示输入的用户名,但后续警报均未出现。
Oooo 和 jQuery 已添加到 header 中,如下所示:
<script src="create/js/jquery-1.4.4.min.js" type="text/javascript" ></script>
<script src="create/js/jquery-ui-1.8.7.custom.min.js" type="text/javascript"></script>
非常感谢任何帮助:)
最佳答案
首先,从回调到 $.post 的返回语句将不会从 Test() 函数返回。您应该使用处理来自服务器的数据的回调函数来调用 Test,如下所示:
function Test(username, callback) {
$.post("checkname.php", {name: username}, callback);
}
Test(document.registration_form.username.value, function(data) {
if(data == "0") {
// Do something
} else {
// Do something else
}
});
Brad 对于比较的看法也是正确的 - 您当前正在为数据分配“0”。我认为,即使存在其他错误,您也应该收到警报。也许您需要 checkname.php 脚本的绝对路径?例如。 “/checkname.php”(注意斜杠)?
关于javascript - 在非 jQuery 函数中使用 jQuery post 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5168739/