• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Node.js, Express 게시판 ajax를 통한 회원가입 기능 구현

ajax를 통한 회원가입 기능 구현

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 글쓴이
  • #9558

    코린이
    참가자

    안녕하세요 선생님

    강의 잘 듣고있습니다.

    강의 완강 후 개인 프로젝트 진행중인데 회원가입 기능을 구현할때 다음과 같이 ajax를 get요청을 통해 아이디 중복여부를 검사하는 코드를 짰습니다.

    ------------------------AJAX 코드----------------------------

    $(".btn-danger").eq(0).click(function(){
              var inputId = $("input").eq(0).val();                    // 아이디 입력란의 value 값을 가져온다
              $.ajax({
                method:"GET",                                           
                url:"/duplicateId",
                data: {
                  id: inputId
                },
                dataType: "text",
                success: function(serverdata){
                  console.log(serverdata);
                },
                error: function(serverdata){
                  console.log(serverdata);
                }
              })
            })

     

    ------------------------SERVER.JS 코드----------------------------

    app.get("/duplicateId",function(req,res){
        db.collection("user").findOne(req.body, function(error,success){
            if(error) {
                res.status(400).send("사용 가능한 아이디입니다.")
            } else if(success){
                res.status(200).send("중복된 아이디입니다.")
            }
        })
    })

     

    컬렉션에는 {id:"test", pw:"test", email:"test@naver.com"}  이렇게 저장되어 있고

    해당 input 박스에 test를 입력하고 중복확인을 누르면 중복됐다는 메시지를 서버에서 받아올 순 있습니다. 근데 컬렉션에 없는 임의의 문자를 입력했을때도 중복됐다는 메시지를 서버에서 받는데...뭐가 잘못 된건지 봐주실 수 있으신가요?ㅠㅠ

    #9565

    codingapple
    키 마스터

    1. 서버로 데이터를 보낼 땐 post요청을 하셔야합니다 그래야 req.body하면 뭐가 나올걸요
    2. 일단 내 생각대로 if문을 사용하는 것 보다는 아이디를 찾았을 때 error,success 에 뭐가 담겨오는지 이런걸 콘솔창에 출력해보고 if문을 거는게 좋습니다 

    3. 아마 원하는 아이디를 db에서 못찾으면 에러가 뜨는게 아니라 success파라미터에 아무것도 안담겨오거나 그럴 겁니다

    그래서 if문을 "success에서 아무것도 못찾아오면 이거해주고 뭐 찾아오면 이거해주셈" 이런 식으로 짜면 될텐데

    콘솔창에 success를 출력해보고 짜도록 합시다 근데 success보다 result가 맞는 작명법인듯요

    #9574

    코린이
    참가자

    ————————AJAX 코드—————————-

    $(".btn-danger").eq(0).click(function(){
              var inputId = $("input").eq(0).val();                    // 아이디 입력란의 value 값을 가져온다
              $.ajax({
                method:"POST",                                           
                url:"/duplicateId",
                data: {
                  id: inputId
                },
                dataType: "text",
                success: function(serverdata){
                  if(serverdata==="중복된 아이디입니다."){
                    $("input").eq(0).val("");
                    alert(serverdata);
                  } else {
                    alert("사용 가능한 아이디입니다.");
                    duplicateComplete1 = true;
                  }
                },
                fail:function(){
                  alert("에러");
                }
              })
            })

    ————————SERVER.JS 코드—————————-

    app.post("/duplicateId",function(req,res){
        db.collection("user").findOne(req.body, function(error,result){
            if(result) {
                res.send("중복된 아이디입니다.");
            } else {
                res.send("사용 가능한 아이디입니다.");
            }
        })
    })

     

    답변 감사합니다. 이렇게 하니까 중복체크가 잘 되는것 같은데 약간...야매 느낌이 나네요...

     

    #9577

    codingapple
    키 마스터

    혼자 잘하셨는데얌

    잘되면 야매아닙니다

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠