我试图做一个Ajax请求检查用户名的数据库已经存在,但我发现它从一个奇怪的行为。这里是我的脚本:
$("#username").blur(function()
{
$.ajax({
type: "POST",
url: "check_username.php",
data:
{
username: $("#username").val()
},
success: function()
{
$("#username_taken").load("check_username.php").show();
},
});
return false;
});
和我的PHP:
<?php
if (($connection = mysql_connect("database", "user", "pass")) === false)
{
die('Could not connect: ' . mysql_error());
}
if ((mysql_select_db("database", $connection)) === false)
{
die ("Could not select database : " . mysql_error());
}
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$username = mysql_real_escape_string($_POST["username"]);
$check = mysql_query("SELECT username FROM users WHERE username = '$username'");
$check_num_rows = mysql_num_rows($check);
if ($check_num_rows == 1)
{
echo "Username already exists.";
return false;
}
}
?>
当我看到网络选项卡上,我看到正在发送两个请求,一个GET和POST,使用相同的信息,我不明白为什么。而我的代码不会在所有的工作时,我有
if ($_SERVER["REQUEST_METHOD"] == "POST")
但如果我尝试
if ($_SERVER["REQUEST_METHOD"] == "GET")
它的作品,我有一个错误:
Notice: Undefined index: username in check_username.php on line 20
Line 20: $username = mysql_real_escape_string($_POST["username"]);
正在传递请求中的数据,所以我不知道它为什么不识别它。我真的不明白这个的问题,因为我已经在脚本,看起来很像是彼此Ajax和它的作品完美...
有什么想法? 谢谢!
哦....我不知道有关负载....我真的不明白怎么“完成(功能(数据)”的工作....我想显示为一条消息说名取,但我不知道怎么我的PHP“连接”到脚本来做到这一点......里面有什么功能(数据) – inBlackAndWhite 2013-04-28 19:00:23
@MF - ?现在你知道,负载()是$就一个快捷方式!该做的功能是一样的在你的代码的成功的功能,并且数据的任何PHP文件的输出,你的情况'回声“用户名已存在。”;'就是返回到完成()函数 – adeneo 2013-04-28 19:09:52
哦,这就是你从php获取东西的方式!!这是完美的!作品像一个魅力!!!谢谢! – inBlackAndWhite 2013-04-28 19:14:05