서버 요청을 처리하고 요청을 처리하기 위해 ajax를 사용하여 로그인 시스템을 간소화하려고합니다. PHP 페이지에 양식 데이터를 POST 한 다음 올바른 매개 변수가 전달되지 않으면 true/false와 'Not Enough Data'를 반환합니다.
내 문제는 내 AJAX 요청이 보내고있는 데이터를 보내지 않는다는 것입니다. 이 기능은 폼의 제출 버튼의 onclick 이벤트에
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]);
}
라고 :
여기 내 자바 스크립트 함수이다. 이제 Chrome에서 디버그 도구를 사용했고 val_UName 및 val_Pwd가 양식 값을 가져 오는 것을 알고 있습니다. 그래서 여기와 login_confirm.php 사이의 고장은 확실히이다
그냥 완전성 '을 위해, 여기에 (내가 연결을 DB에 연결하고 닫는 라인 왼쪽으로) 무엇을 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';
}
누구나 여기에 무슨 일이 일어나고 있는지, 또는 이와 비슷한 것을 알 수 있습니까?
추신. 나는 GET을 사용하는 것으로 변경하려고 시도했지만 여전히 작동하지 않는다. ...
어떤 데이터가 나옵니까? –
$ username 또는 $ password 변수가 빈 문자열이므로 PHP 페이지에서 'Not Enough Data'만 반환합니다. 따라서 아무 것도 없습니다. – CrowderSoup
Fiddler라는 도구를 선택하십시오. 모든 요청에 대한 요청 데이터와 응답 데이터를 볼 수 있습니다. 어떤 결과가 요청 데이터에 나타나더라도 PHP 페이지가받는 것을 확인할 것입니다. –