我正在尝试发出 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,看起来很像那个,它工作得很好......
有什么想法吗??谢谢!