jQuery와 Ajax

gyomni·2022년 1월 7일
1

Week I Learned

목록 보기
5/20
post-thumbnail

jQuery

  • HTML의 요소들을 조작하는, 편리한 Javascript를 미리 작성해둔 것. 라이브러리!

  • Javascript로도 모든 기능(예 - 버튼 글씨 바꾸기 등)을 구현할 수는 있지만,
    1) 코드 복잡, 2) 브라우저 간 호환성 문제 고려 => jQuery라는 라이브러리가 등장.

🔎 jQuery Javascript - 코드 비교

jQuery는 Javascript와 다른 특별한 소프트웨어가 아니라 미리 작성된 Javascript 코드.
전문 개발자들이 짜둔 코드를 잘 가져와서 사용하는 것임을 기억! (그렇게 때문에, 쓰기 전에 import를 해야함)

> Javascript

        document.getElementById("element").style.display = "none";

> jQuery

        $('#element').hide();

🔎 jQuery 사용

jQuery CDN 부분을 참고해서 import - 링크텍스트
<head></head> 사이에 아래를 넣으면 끝!

        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

잠깐!! 모든 jQuery를 외워야 하나? =>절대 No!! ❌!!
예를 들어 스크롤 움직임을 감지한다거나, 화면 사이즈를 안다거나, jQuery가 할 수 있는 일은 무척 많다.
그러니, 필요할 때에 필요한 기능을 구글링해서 쓰기!

자주쓰는 jQuery

1) 값 가져오기

        $('#post-url').val();

2) 보이기 / 숨기기


$('#//id name //').hide();
$('#//id name //').show();

3) css의 값 가져오기


        $('#//id name //').css('//가져올 값//');

4) 태그 내 텍스트 입력하기

  • input box의 경우
        $('#//id name //').val('여기에 텍스트를 입력하면!');
  • 다른 것들 - 예) 버튼의 텍스트 바꾸기
        // 가리키고 싶은 버튼에 id 값을 준다음
<button id="btn-posting-box" type="button" class="btn btn-primary">포스팅 박스 열기</button>
	$('#btn-posting-box').text('포스팅 박스 닫기');
  1. 태그 내 html 입력하기
  • <div> ~ </div> 안에 동적으로 html을 넣고 싶을 땐?
    (예를 들어, 포스팅되면 → 카드 추가)
        // 사이에 html을 넣고 싶은 태그에 id값을 준 다음
        <div id="cards-box" class="card-columns">
            <div class="card">
              <img class="card-img-top" src="https://www.fodors.com/wp-content/uploads/2018/10/4_UltimateRome_PiazzaNavona-975x650.jpg" alt="Card image cap">
              <div class="card-body">
                <a href="https://naver.com/" class="card-title">여기 기사 제목이 들어가죠</a>
                <p class="card-text">여기에 기사 내용이 들어가겠죠</p>
                <p class="card-text comment">여기엔 코멘트가 들어갑니다</p>
              </div>
            </div>
          </div>
  • 버튼을 넣어보기
        let temp_html = '<button>나는 추가될 버튼이다!</button>';
        $('#cards-box').append(temp_html);
  • 버튼 말고, 카드를 넣어보기
        // 주의: 홑따옴표(')가 아닌 backtick(`)으로 감싸기.
        // backtick을 사용하면 문자 중간에 Javascript 변수를 삽입 가능.
        let img_url = 'https://www.eurail.com/content/dam/images/eurail/Italy%20OCP%20Promo%20Block.adaptive.767.1535627244182.jpg';
        let link_url = 'https://naver.com/';
        let title = '여기 기사 제목이 들어가죠';
        let desc = '기사의 요약 내용이 들어갑니다. 동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라만세 무궁화 삼천리 화려강산...';
        let comment = '여기에 코멘트가 들어갑니다.';
        
        let temp_html = `<div class="card">
                            <img class="card-img-top"
                                src="${img_url}"
                                alt="Card image cap">
                            <div class="card-body">
                                <a href="${link_url}" class="card-title">${title}</a>
                                <p class="card-text">${desc}</p>
                                <p class="card-text comment">${comment}</p>
                            </div>
                        </div>`;
        $('#cards-box').append(temp_html);

Ajax

🔎 Ajax 시작

참고! Ajax는 jQuery를 import한 페이지에서만 동작 가능.
즉, http://google.com/ 과 같은 화면에서 개발자도구를 열면, jQuery가 임포트 되어있지 않기 때문에 아래와 같은 error가 뜸.
Uncaught TypeError: $.ajax is not a function
=> ajax라는 게 없다는 뜻 !

🔎 Ajax 기본 골격

$.ajax({
  type: "GET",
  url: "여기에URL을입력",
  data: {},
  success: function(response){
    console.log(response)
  }
})

> 코드 해설

$.ajax({
  type: "GET", // GET 방식으로 요청한다.
  url: "http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99",
  data: {}, // 요청하면서 함께 줄 데이터 (GET 요청시엔 비워두기)
  success: function(response){ // 서버에서 준 결과를 response라는 변수에 담음
    console.log(response) // 서버에서 준 결과를 이용해서 나머지 코드를 작성
  }
})

🔎 $ajax 코드 설명

  • type: "GET" → GET 방식으로 요청.
  • url: 요청할 url
  • data: 요청하면서 함께 줄 데이터 (GET 요청시엔 비워두기)

📍
GET 요청은, url뒤에 아래와 같이 붙여서 데이터를 가져감.
http://naver.com?param=value¶m2=value2
POST 요청은, data : {} 에 넣어서 데이터를 가져감.
data: { param: 'value', param2: 'value2' },

  • success: 성공하면, response 값에 서버의 결과 값을 담아서 함수를 실행.
    success: function(response){ // 서버에서 준 결과를 response라는 변수에 담음
      console.log(response) 
    }
profile
Front-end developer 👩‍💻✍

0개의 댓글