【发布时间】:2011-05-22 23:43:30
【问题描述】:
我正在尝试通过使用 ajax 来处理返回并形成对服务器的请求来简化我的登录系统。我想将我的表单数据发布到 PHP 页面,然后如果没有传递正确的参数,则返回 true/false 和“Not Enough Data”。
我的问题是我的 AJAX 请求没有发送我要发送的数据。
这是我的 JavaScript 函数:
function confirm_login()
{
val_UName = document.login_form.username.value;
val_Pwd = document.login_form.password.value;
var result = null;
var scriptUrl = "login_confirm.php";
$.ajax({
url: scriptUrl,
type: 'post',
data: ({username : val_UName, password : val_Pwd}),
dataType: 'html',
async: false,
success: function(data) {
result = data;
}
});
result = result.split('|');
if(result[1] == 'true')
window.location = "index.php";
else
alert('Could not log you in!\n\n'+result[0]);
}
该函数在表单提交按钮的onclick事件中调用。现在,我使用了 Chrome 中的调试工具,并且我知道 val_UName 和 val_Pwd 正在获取表单值。所以这里和login_confirm.php之间肯定是一个故障
为了完整起见,这里是 login_confirm.php 中发生的事情(我省略了连接到数据库并关闭连接的行):
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
if($username == '' || $password == '')
echo 'Not Enough Data|';
$login_query = "SELECT * FROM users WHERE u_name = '$username' AND pwd = '$password'";
$result = mysql_query($login_query);
$result_rows = mysql_num_rows($result);
if($result_rows > 0)
{
session_start();
$row = mysql_fetch_assoc($result);
$_SESSION['loggedin'] = true;
$_SESSION['uname'] = $row['u_name'];
$_SESSION['uID'] = $row['pkid'];
$_SESSION['email'] = $row['email'];
$_SESSION['roleID'] = $row['fk_roleid'];
echo 'true';
}
else
{
echo 'false';
}
有人知道这里发生了什么或以前见过类似的事情吗?
PS。我什至尝试过改用 GET,但还是不行……
【问题讨论】:
-
如果 $username 或 $password 变量为空字符串,我的 PHP 页面只会返回“Not Enough Data”,所以没有。
-
拿起名为 Fiddler 的工具。它将让您查看所有调用的请求数据和响应数据。在请求数据中看到的任何结果都将确认 PHP 页面正在接收什么。
标签: php javascript jquery ajax post