WIL2


JQueryとAjax
JQuery
JクエリはオープンソースベースのJavaScriptライブラリです.Jクエリーを使用すると、短いコードでWebページに複数の効果や効果を適用できます.
2番目のクエリーを使用する前に、importを行う必要があります.
jQuery get started
< script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js">
id,class属性
jQueryからタグをロードする場合、主にid値を利用するようです.
  • id:1つの要素に1つのid>'#id'しかありません.
  • class:複数の要素に適用>>です.「class」にロードされます.
  • jQueryを使用する場合は、属性値を$("#id")または$(".class")にロードします.
    $('#name').val('성함을 적어주세요')
    >S.fn.init [input#name.form-control]
    $('#name').val()
    >'성함을 적어주세요'
    val()関数として値を入力またはロードできます.
    $('.wrap').hide()
    S.fn.init [div.wrap, prevObject: S.fn.init(1)]
    $('.wrap').show()
    S.fn.init [div.wrap, prevObject: S.fn.init(1)]
    hide()とshow()を使用してwrapクラスセクションを非表示または表示できます.
    let temp_html = `<button>버튼</button>`
    $('#mycard').append(temp_html);
    append()関数を使用してボタンを追加したり、divボックスを追加したりできます.
    上のlettemp html=<button>버튼</button>코드부분は、単一引用符(`)ではなくbacktick(`)で包まなければなりません.backticを使用すると、javascript変数を文字の間に挿入できます.
    <style>
    .wrap{
    	display: none;
    }
    </style>
    <script>
            function open_box(){
                $('.wrap').show();
            }
            function close_box(){
                $('.wrap').hide();
            }
    </script>
    <body>
    	... <button onclick="open_box()">방명록 쓰기</button>
        <button type="button" class="btn btn-outline-dark" onclick="close_box()">닫기</button>
        ...
    </body>
    上のコードでは、ブラウザを初めて開くときにwrap部分を非表示にすることができ、「ルームリストを書く」ボタンを押すとwrap部分を表示することができ、「閉じる」ボタンを押すとwrap部分を非表示にすることができます.
    display:none; vs. visibility:hidden;
    display:none;
    画面にエリアを取らず、いっそなくならないようにします.
    visibility: hidden;
    画面上だけがその内容に隠され、領域は依然として占められている.
    jQuery Quiz
    <!doctype html>
    <html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>jQuery 연습하고 가기!</title>
    
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    
        <style type="text/css">
        div.question-box {
            margin: 10px 0 20px 0;
        }
        </style>
    
        <script>
        function q1() {
        // 1. input-q1의 입력값을 가져온다. $('# .... ').val() 이렇게!
        // 2. 만약 입력값이 빈칸이면 if(입력값=='')
        // 3. alert('입력하세요!') 띄우기
        // 4. alert(입력값) 띄우기
            let inputq1 = $('#input-q1').val();
            if(inputq1 == ''){
                alert('입력하세요');
            } else{
                alert(inputq1);
            }
        }
    
        function q2() {
        // 1. input-q2 값을 가져온다.
        // 2. 만약 가져온 값에 @가 있으면 (includes 이용하기 - 구글링!)
        // 3. [email protected] -> gmail 만 추출해서 ( .split('@') 을 이용하자!)
        // 4. alert(도메인 값);으로 띄우기
        // 5. 만약 이메일이 아니면 '이메일이 아닙니다.' 라는 얼럿 띄우기
            let inputq2 = $('#input-q2').val();
            if(inputq2.includes('@')){
                alert(inputq2.split('@')[1].split('.')[0]);
            }else{
                alert('이메일이 아닙니다.');
            }
        }
    
        function q3() {
        // 1. input-q3 값을 가져온다. let txt = ... q1, q2에서 했던 걸 참고!
        // 2. 가져온 값을 이용해 names-q3에 붙일 태그를 만든다. (let temp_html = `<li>${txt}</li>`) 요렇게!
        // 3. 만들어둔 temp_html을 names-q3에 붙인다.(jQuery의 $('...').append(temp_html)을 이용하면 굿!)
                let inputq3 = $('#input-q3').val();
                let temp_html = `<li>${inputq3}</li>`
                $('#names-q3').append(temp_html);
        }
    
        function q3_remove() {
        // 1. names-q3의 내부 태그를 모두 비운다.(jQuery의 $('....').empty()를 이용하면 굿!)
            $('#names-q3').empty();
        }
        </script>
    </head>
    
    <body>
        <h1>jQuery + Javascript의 조합을 연습하자!</h1>
        <div class="question-box">
            <h2>1. 빈칸 체크 함수 만들기</h2>
            <h5>1-1. 버튼을 눌렀을 때 입력한 글자로 얼럿 띄우기</h5>
            <h5>[완성본]1-2. 버튼을 눌렀을 때 칸에 아무것도 없으면 "입력하세요!" 얼럿 띄우기</h5>
            <input id="input-q1" type="text" /> <button onclick="q1()">클릭</button>
        </div><hr />
        <div class="question-box">
            <h2>2. 이메일 판별 함수 만들기</h2>
            <h5>2-1. 버튼을 눌렀을 때 입력받은 이메일로 얼럿 띄우기</h5>
            <h5>2-2. 이메일이 아니면(@가 없으면) '이메일이 아닙니다'라는 얼럿 띄우기</h5>
            <h5>[완성본]2-3. 이메일 도메인만 얼럿 띄우기</h5>
            <input id="input-q2" type="text" /> <button onclick="q2()">클릭</button>
        </div><hr />
        <div class="question-box">
            <h2>3. HTML 붙이기/지우기 연습</h2>
            <h5>3-1. 이름을 입력하면 아래 나오게 하기</h5>
            <h5>[완성본]3-2. 다지우기 버튼을 만들기</h5>
            <input id="input-q3" type="text" placeholder="여기에 이름을 입력" />
            <button onclick="q3()">이름 붙이기</button>
            <button onclick="q3_remove()">다지우기</button>
            <ul id="names-q3">
                <li>세종대왕</li>
                <li>임꺽정</li>
            </ul>
        </div>
    </body>
    </html>
    *ID값 앞에 '#' 꼭 붙이기! *변수에 태그를 만들어 붙일 때는 백틱(backtick)으로!
    .includes(' ', startPoint)
    startPoint関数は、まず「」の文字が含まれているかどうかを検索します.(文字列は0から)
    .split(' ')
    「」の文字数を基準として、前の文字列を分割する関数.
    AJAX
    サーバ>クライアントJSON
    JSON(JavaScript Object Notation)は、データを格納または転送する際によく用いられる軽量レベルのデータ交換フォーマットです.
    JSONはKey:Valueで構成されています.
    ソウル市のオープンAPIを使って勉強しましょう.
    ソウル市OpenAPIhttp://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99
    AJAXは非同期JavaScriptとXMLです.簡単に言えば、XMLHttpRequestオブジェクトを使用してサーバと通信します.
    次はajaxの基本フレームワークです.
    $.ajax({
      type: "GET",
      url: "여기에URL을입력",
      data: {},
      success: function(response){
        console.log(response)
      }
    })
    urlのデータをGETで要求します.
    GETはクライアントがデータを要求する方式であり、主にデータの照会に用いられる.
    要求時にローデータを空にする(GET)
    コンテンツは、サーバからの結果をコンソールウィンドウに出力することです.
    上のurlにソウル市スモッグopenAPIをロードし、必要なデータをコンソールウィンドウに出力しようとした.
    $.ajax({
           type: "GET",
           url: "http://spartacodingclub.shop/sparta_api/seoulair",
           data: {},
           success: function (response) {
           		let rows = response['RealtimeCityAir']['row']
         	    for(let i = 0; i < rows.length; i++){
                     let gu_name = rows[i]['MSRSTE_NM']
                     let mise_value = rows[i]['IDEX_MVL']
                     console.log(gu_name, mise_value);
                    }
                }
            })
    上記の例では、RealtimeCityAirという名前のキー値にはDictionary型valueが含まれ、rowという名前のキー値にはリスト型valueが含まれています.
    読み込まれたスモッグ情報をrows配列に入れ、0から終了の順に「MSRSTE NM」キーの値(旧名称)と「IDEX MVL」キーの値(スモッグ度合い)をコンソールウィンドウに出力します.これにより、以下のコンテンツのコンソールウィンドウを表示できます.

    練習AJAX-1
    function q1() {
            $('#names-q1').empty();
            $.ajax({
                type: "GET",
                url: "http://spartacodingclub.shop/sparta_api/seoulair",
                data: {},
                success: function (response) {
                    let rows = response['RealtimeCityAir']['row']
                    for(let i = 0; i < rows.length; i++){
                        let gu_name = rows[i]['MSRSTE_NM']
                        let mise_value = rows[i]['IDEX_MVL']
                        let temp_html = `<li>${gu_name} : ${mise_value}</li>`  
                        $('#names-q1').append(temp_html)
                    }
                }
            })
        }
    上記の例では、結果値をブラウザウィンドウの例にさらにサスペンションします.
    ここでも同様にtemp html変数にコードを加え、appendで
  • タグに貼り付けます.このように価格をつける時、${ }の中でやっと価格をつけることができます.
    一番上の行では、空の()関数が使用され、ボタンをクリックするたびにリフレッシュでロードできます.

    +スモッグが悪い
    <style>
    .bad{
            color: red;
        }
    </style>
    
    if(mise_value > 120){
         temp_html = `<li class="bad">${gu_name} : ${mise_value}</li>`
    } else {
         temp_html = `<li>${gu_name} : ${mise_value}</li>`
    }
    条件文を付けてスモッグ値が120を超えると赤色で出力されます.
    練習AJAX-2
    この例では、ソウル市大菱がOpenAPI情報を使用してボタンをクリックすると、大菱が情報テーブルを更新する.大菱の駐車台数が5台未満の場合は、赤いデザインを着用します.
    ソウル市泰陵のOpenAPI
    http://spartacodingclub.shop/sparta_api/seoulbike
    <!doctype html>
    <html lang="ko">
    
    <head>
      <meta charset="UTF-8">
      <title>JQuery 연습하고 가기!</title>
      <!-- JQuery를 import 합니다 -->
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    
      <style type="text/css">
      div.question-box {
        margin: 10px 0 20px 0;
      }
    
      table {
        border: 1px solid;
        border-collapse: collapse;
      }
    
      td, th {
        padding: 10px;
        border: 1px solid;
      }
      <!--따릉이 대수가 5대 이하이면 빨간색으로 글씨를 바꿔주는 용도-->
      .short{ 
        color: red;
      }
      </style>
    
      <script>
        function q1() {
          $('#names-q1').empty();
          $.ajax({
            type: "GET",
            url: "http://spartacodingclub.shop/sparta_api/seoulbike",
            data: {},
            success: function (response) {
              let rows = response['getStationList']['row']
              for (let i = 0; i < rows.length; i++) {
                let stationName = rows[i]['stationName']
                let rackTotCnt = rows[i]['rackTotCnt']
                let parkingBikeTotCnt = rows[i]['parkingBikeTotCnt']
                let temp_html = ``
                if (parkingBikeTotCnt < 5) {
                  temp_html = `<tr class="short">
                                <td>${stationName}</td>
                                <td>${rackTotCnt}</td>
                                <td>${parkingBikeTotCnt}</td>
                              </tr>`
                } else {
                  temp_html = `<tr>
                                  <td>${stationName}</td>
                                  <td>${rackTotCnt}</td>
                                  <td>${parkingBikeTotCnt}</td>
                                </tr>`
                }
                $('#names-q1').append(temp_html)
              }
            }
          })
        }
      </script>
    
    </head>
    
    <body>
      <h1>jQuery + Ajax의 조합을 연습하자!</h1>
    
      <hr />
    
      <div class="question-box">
        <h2>2. 서울시 OpenAPI(실시간 따릉기 현황)를 이용하기</h2>
        <p>모든 위치의 따릉이 현황을 보여주세요</p>
        <p>업데이트 버튼을 누를 때마다 지웠다 새로 씌여져야 합니다.</p>
        <button onclick="q1()">업데이트</button>
        <table>
          <thead>
            <tr>
              <td>거치대 위치</td>
              <td>거치대 수</td>
              <td>현재 거치된 따릉이 수</td>
            </tr>
          </thead>
          <tbody id="names-q1">
            <tr>
              <td>102. 망원역 1번출구 앞</td>
              <td>22</td>
              <td>0</td>
            </tr>
            <tr>
              <td>103. 망원역 2번출구 앞</td>
              <td>16</td>
              <td>0</td>
            </tr>
            <tr>
              <td>104. 합정역 1번출구 앞</td>
              <td>16</td>
              <td>0</td>
            </tr>
        </tbody>
        </table>
      </div>
    </body>
    
    </html>
    $('names-q1').empty()

    *ここでは、空の後ろに括弧が付いていないので、ずっとエラーが発生しています.空()も関数ですから、忘れないで!
    練習AJAX-3
    この例では、API情報を受信すると、ボタンをクリックするたびにRetanというロールが変更されます.
    飛毛脚API
    http://spartacodingclub.shop/sparta_api/rtan

    楽坦のAPIには画像urlとmsgが含まれており、リフレッシュするたびに変更されます.この関数をボタンをクリックすればいいです.
    <!doctype html>
    <html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>JQuery 연습하고 가기!</title>
        <!-- JQuery를 import 합니다 -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    
        <style type="text/css">
            div.question-box {
                margin: 10px 0 20px 0;
            }
            div.question-box > div {
                margin-top: 30px;
            }
    
        </style>
    
        <script>
            function q1() {
             $.ajax({
                type: "GET",
                url: "http://spartacodingclub.shop/sparta_api/rtan",
                data: {},
                success: function (response) {
                    let url = response['url']
                    let msg = response['msg']
    
                    $("#img-rtan").attr("src", url); //src 부분을 URL로 바꾸고 싶다는 것
                    $("#text-rtan").text(msg); 
                }
            })
            }
        </script>
    
    </head>
    <body>
        <h1>JQuery+Ajax의 조합을 연습하자!</h1>
    
        <hr/>
    
        <div class="question-box">
            <h2>3. 르탄이 API를 이용하기!</h2>
            <p>아래를 르탄이 사진으로 바꿔주세요</p>
            <p>업데이트 버튼을 누를 때마다 지웠다 새로 씌여져야 합니다.</p>
            <button onclick="q1()">르탄이 나와</button>
            <div>
                <img id="img-rtan" width="300" src="http://spartacodingclub.shop/static/images/rtans/SpartaIcon11.png"/>
                <h1 id="text-rtan">나는 ㅇㅇㅇ하는 르탄이!</h1>
            </div>
        </div>
        </body>
    </html>
    *$('#id').これは、attr(「src」,url)id値を持つタグのsrcを受信したurlに置き換えることを意味する.
    ここでattrはHTML属性を扱うjQuery getter/setterメソッドである.
    *$('#id').text(「text」)id値を持つタグ付きテキストをtextに変換することを意味する.
    宿題:ファン名簿に天気情報を入れる
    ファン名簿に天気情報を入れる
    ロードが完了すると、天気APIを使用して天気を表示します.
    ソウル天気API
    http://spartacodingclub.shop/sparta_api/weather/seoul
    $(document).ready(function(){
    	...
    });
    >>$(function(){...});로 줄여 쓸 수 있다
    $(document).ready()はJavaScriptのonloadと同じ機能を持つ.つまり、ブラウザのロードが完了したら、次の実行文を実行します.
    $(document).ready(function () {
                $.ajax({
                type: "GET",
                url: "http://spartacodingclub.shop/sparta_api/weather/seoul",
                data: {},
                success: function (response) {
                    let temp = response['temp']
                    $("#temp").text(temp);
                }
            })
            });
    
    <p>현재 기온: <span id="temp">0.00</span></p>

    確かにひとつずつ作る楽しみがあります!
    次の運転手さんはPsunですがそれが少しついた感じ
    夜からPythonの勉強を始めたと知っていたのに...
    ところで、パイは本当に遅いですね...ううう