테스트 사이트 - 개발 중인 베타 버전입니다

ajax로 api 호출후 제이쿼리 에러를 못찾겠습니다.. 채택완료

수난이대 4년 전 조회 6,229

 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">https://api 주소~~",    type: "POST",    data: {     identifier: $("#mid").val(),        password: $("#passwd").val(),    },    success: function(data) {     console.log(data);    }   });  }

 

제이쿼리에서 충돌이 나는데  제이쿼리를 3~4가지 버전으로 바꿔도 같은 에러입니다.

api 통신쪽 문제일까요?

로그인인 정보가 맞으면 정상적으로 리턴값이 오는데

로그인정보가 맞지 않을때 충돌이 납니다..

 

댓글을 작성하려면 로그인이 필요합니다.

답변 7개

채택된 답변
+20 포인트
Big1
4년 전

400 에러 아닌가요?  url: "https://api/" rel="nofollow">https://api 주소~~", 

이 주소가 잘못되었나 싶습니다

로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

수난이대
4년 전
답변 감사합니다.
아이디와 비번이 맞으면 정상적으로 리턴되고
맞지않을경우 400을 리턴받습니다.
그 400이 표기된거로 추측됩니다.. api 주소는 맞습니다.
B
Big1
4년 전
아;; 404랑 헤깔렸네요 ㅋ
B
Big1
4년 전
400에러는 success 하지 못했겠지요?
에러처리를 해보셔요
$.ajax({
type: "POST",
data: {},
url: '',
success: function(data) {
},
complete : function(xhr, status) {
console.log('complete');
},
error : function(xhr, status, error) {
console.log(status, error);
}
});
수난이대
4년 전
제이쿼리 충돌? 오류 후 아래 에러 뜨네요..
error
complete

댓글을 작성하려면 로그인이 필요합니다.

성공은 리턴되는데

실패시 리턴이 안되고 에러발생

 

에러발생 관련 제이쿼리 살펴보니

코로스도메인  관련된 코드도 보이는데..

 

스크립트가 어려워 해석은 못하지만..

 

크로스도메인과 관련 없겠죠???

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

h
4년 전

bad request 이므로 잘못된 값이 넘어왔다는 뜻입니다.

어떻게 api가 구성되었는지는 모르지만

1. 아이디, 패스워드가 틀리다.

2. 아이디, 패스워드에 사용할 수 없는 문자가 사용되었다.

일단 2가지가 생각됩니다.

보낼때, datatype 설정도 필요합니다. json으로 보내실꺼면 stringfy해서 보내야 합니다. 개발자도구에서 보내는 data가 어떻게 보내어지는지 확인해보시기 바랍니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

수난이대
4년 전
답변 감사합니다 .
잘못된 값( 맞지않은 아이디 비번) 을 넣어서 저 에러를 리턴 받은거고. 저 에러는 포스트맨으로 테스트해서 정상적으로 에러 코드를 받았습니다

실제 구현을 해보 로그인실패시 리턴값이 출력이 안되고 제이쿼리쪽 에러로 멈췄습니다

혹시 크로스 도메인 문제는 아닐까요?
성공시에는 정상적으로 리턴 되는데..
실패시에만 제이쿼리쪽 오류.. 부근을 보니
크로스도메인 관련 부분 같습니다..

댓글을 작성하려면 로그인이 필요합니다.

정답을 알고 계시네요.

 

API쪽에서 예외처리 되어있지 않아 발생한 문제 입니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

수난이대
4년 전
답변 감사합니다. 아 그런가요?
포스트맨으로 api 테스트 해본 결과
아이디 비번값이 맞지않으면 400 에러코드와 함께 맞지않다는 메세지가 나옵니다.


{
"statusCode": 400,
"error": "Bad Request",
"message": [
{
"messages": [
{
"id": "Auth.form.error.invalid",
"message": "Identifier or password invalid."
}
]
}
],
"data": [
{
"messages": [
{
"id": "Auth.form.error.invalid",
"message": "Identifier or password invalid."
}
]
}
]
}

그럼 예외처리는 api단에서 해놓은거 아닌지..?

댓글을 작성하려면 로그인이 필요합니다.

400 에러면 호출하는 쪽 문제가 아니라 호출받는 곳에서 프로그램 오류가 나는거라서

 

호출받는 곳에 오류가 발생하면 실패값으로 리턴되도록 예외처리 해달라고 하셔야 될거 같네요.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

4년 전

ajax 처리 페이지에서,

 

'아이디와 비번이 맞지 않을 때 리턴되는 데이터 형태' 를

'아이디와 비번이 맞을 때 리턴되는 데이터 형태'와 동일하게 해주면 됩니다.

 

ex)

if ($ok)

  echo 'Y';

else

  echo 'N';

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

수난이대
4년 전
답변 감사합니다.

리턴전에 스크립트 오류가 나와서 리턴이 안되고 있습니다.

그것도 아이디와 비번이 맞지 않을때만...
마르스컴퍼니
4년 전
"https://api 주소~~" 처리 페이지에서

아이디, 패스워드가 틀린 경우에도 결과 데이터를 리턴해주면 됩니다.

"https://api 주소~~" 파일의 소스를 올리면 좋을 듯 싶습니다.

댓글을 작성하려면 로그인이 필요합니다.

아이디 비번이 맞을경우 success: function(data) 부분에 data가 없으면 그런 오류가 나타나기도 합니다

 

 

아이디 비번이 맞든 맞지않든 내뱉는 내용은 있어야됩니다

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

수난이대
4년 전
답변감사합니다.

alert(data['리턴값'])로 출력해봐도, 출력 자체가 안되고 있어서요..

출력전에 제이쿼리 아래부부분에서 에러가 나네요

그래서 비번이 틀릴경우 리턴까지 보여주지 못하고 있습니다.

a.send(n.hasContent && n.data || null)

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인