ajax 질문입니다.
본문
<script type="text/javascript">
$(function() {
$(document).on("submit", "#loginF", function(event) {
event.preventDefault();
$.ajax({
type: "POST"
, url: "/resource/process/login.proc.php"
, data: $(this).serialize()
, success: function(response) {
if (response == "success") {
$("#login-error").html("<div class='alert alert-success'>Login success</div>");
}
if (response == "error") {
$("#login-error").html("<div class='alert alert-warning'>Login warning</div>");
}
}
});
});
});
</script>
login.php 안에 위와 같이 폼 밑에 스크립트넣었고.
login 값을 받는파일에
$userid = trim($_POST['userName']);
$userpw = $_POST['userPw'];
$sql = "SELECT * FROM userinfo WHERE userId = ? AND userPw = ?";
$stmt = $dbconn->prepare($sql);
$stmt->bind_param('ss',$userid ,$userpw);
$res = $stmt->execute();
$res = $stmt->get_result();
if ($res->num_rows == 1) {
echo "success" ;
} else {
echo "error";
}
이렇게 넣었습니다. 현재 ajax를 사용하지 않고 출력은 되는데
ajax로 테스트 할떄 무반응입니다 오류도 안뜨구요
도움이 필요합니다 선배님들!
!-->!-->답변 3
ajax 통신은 별도의 서버페이지로 인식합니다.
한페이지에서 작동하는 원리가 아니라
로그인 폼에서 별도로 값을 보내는 페이지이기 때문에 받는 페이지도 디비 접속이 가능해서 결과 값을
리턴합니다.
즉 인크루드의 개념과는 다른 원리 입니다.
if (response == "success") {
$("#login-error").html("<div class='alert alert-success'>Login success</div>");
}
위쪽에
alert(response);
를 넣으셔서 넘어오시는 값을 확인해 보시고요
혹 submit 이 전파가 안될수 있으니 이벤트방식을
$("#loginF").on("submit", function(){... });
형식으로 하시던가
form 문에 실행함수를 넣어줘 보세요
<form id="loginF" onsubmit="return login_submit()">
$stmt
->bind_param(
'ss'
,
$userid
,
$userpw
); 이게 잘못됐어요 바인딩 처리시 물음표일적에는 1,2 이렇게 매개변수에 넣어야하고 $userid, $userpw는 분리해서 바인딩해야되요
그러니까 즉 $stmt->
bindParam(1,$this->userid, PDO::PARAM_STR);
두개니까 하나더 추가하면되요 원칙상 저렇게 해야한데 mysqli랑 헷갈린거같아요
글고 num_rows 이건 mysqli이고 pdo로는 rowCount()이걸 사용해야되요