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

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

QA

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 통신쪽 문제일까요?

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

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

 

3717287807_1611653901.526.png

이 질문에 댓글 쓰기 :

답변 7

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

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

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);
    }
});

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

 

 

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

답변감사합니다.

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

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

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

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

ajax 처리 페이지에서,

 

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

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

 

ex)

if ($ok)

  echo 'Y';

else

  echo 'N';

"https://api 주소~~"  처리 페이지에서

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

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

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

 

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

정답을 알고 계시네요.

 

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

답변 감사합니다. 아 그런가요?
포스트맨으로 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단에서 해놓은거 아닌지..?

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

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

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

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

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

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

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

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

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

성공은 리턴되는데

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

 

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

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

 

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

 

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

답변을 작성하시기 전에 로그인 해주세요.
전체 258
QA 내용 검색
filter #api ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT