ajax로 api 호출후 제이쿼리 에러를 못찾겠습니다..
본문
function login_app()
{
if(document.login.mid.value == "")
{
alert("아이디(이메일)을 적어주세요..^^;");
document.login.mid.focus();
return;
}
if(document.login.passwd.value == "")
{
alert("비밀번호를 적어주세요..^^;")
document.login.passwd.focus();
return;
}
$.ajax({
url: "https://api 주소~~",
type: "POST",
data: {
identifier: $("#mid").val(),
password: $("#passwd").val(),
},
success: function(data) {
console.log(data);
}
});
}
제이쿼리에서 충돌이 나는데 제이쿼리를 3~4가지 버전으로 바꿔도 같은 에러입니다.
api 통신쪽 문제일까요?
로그인인 정보가 맞으면 정상적으로 리턴값이 오는데
로그인정보가 맞지 않을때 충돌이 납니다..
답변 7
아이디 비번이 맞을경우 success: function(data) 부분에 data가 없으면 그런 오류가 나타나기도 합니다
아이디 비번이 맞든 맞지않든 내뱉는 내용은 있어야됩니다
ajax 처리 페이지에서,
'아이디와 비번이 맞지 않을 때 리턴되는 데이터 형태' 를
'아이디와 비번이 맞을 때 리턴되는 데이터 형태'와 동일하게 해주면 됩니다.
ex)
if ($ok)
echo 'Y';
else
echo 'N';
400 에러면 호출하는 쪽 문제가 아니라 호출받는 곳에서 프로그램 오류가 나는거라서
호출받는 곳에 오류가 발생하면 실패값으로 리턴되도록 예외처리 해달라고 하셔야 될거 같네요.
정답을 알고 계시네요.
API쪽에서 예외처리 되어있지 않아 발생한 문제 입니다.
bad request 이므로 잘못된 값이 넘어왔다는 뜻입니다.
어떻게 api가 구성되었는지는 모르지만
1. 아이디, 패스워드가 틀리다.
2. 아이디, 패스워드에 사용할 수 없는 문자가 사용되었다.
일단 2가지가 생각됩니다.
보낼때, datatype 설정도 필요합니다. json으로 보내실꺼면 stringfy해서 보내야 합니다. 개발자도구에서 보내는 data가 어떻게 보내어지는지 확인해보시기 바랍니다.
성공은 리턴되는데
실패시 리턴이 안되고 에러발생
에러발생 관련 제이쿼리 살펴보니
코로스도메인 관련된 코드도 보이는데..
스크립트가 어려워 해석은 못하지만..
크로스도메인과 관련 없겠죠???