我試圖通過使用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,但仍然不起作用...
你收到什麼數據? – 2010-12-09 16:37:18
如果$ username或$ password變量是空字符串,那麼我的PHP頁面將只返回'Not Enough Data',所以沒有。 – CrowderSoup 2010-12-09 16:38:26
拿起名爲Fiddler的工具。它會讓你看到所有呼叫的請求數據和響應數據。無論結果如何,請求數據都會確認PHP頁面正在接收什麼。 – 2010-12-09 16:39:51