처음 Ajax(jQuery) 2018년판

  • 2018/03/21 2018 년판으로 재편집

    소개: Ajax란?



    Ajax는 "Asynchronous JavaScript + XML"의 약자입니다. 간단히 말하면 JavaScript와 XML을 사용하여 비동기적으로 서버와의 통신을 할 수 있습니다.
    Ajax를 사용하는 것으로 화면 천이를 하지 않고 HTML을 갱신하는 것이 가능하므로, 유저빌리티의 향상이나 서버 부하의 경감에 연결됩니다. AngularJS 등으로 작성한 싱글 페이지 어플리케이션은 이 기술을 중심으로 구성되어 있습니다.
    간단히 정리하면 다음과 같습니다.
  • 페이지 전환을 수행하지 않고 (비동기 처리) 콘텐츠를 다시 씁니다.
  • 다른 프로세스와 동시에 병렬로 서버와 상호 작용할 수 있습니다

  • 또, jQuery에서의 Ajax 구현이 간편하므로, 이번은 jQuery, 로컬 서버에 MAMP를 사용하고 있습니다.
    처음에는 python이나 node 등의 원라이너로 로컬 서버에서 실시한다고 했습니다만, 둘 다 ajax 통신은 성공하지 않았습니다.

    환경


  • jquery:3.1.1
  • MAMP:4.1.1

  • 샘플: 로그인 인증(POST 전송)



    이번은, 로그인 인증을 상정해, html에서의 폼의 내용을 Ajax로 PHP에 보내, 거기로부터 돌려주어진 결과를 html에 렌더링 한다고 하는 기능을 구현합니다.
    덧붙여 폼내에서의 송신 버튼을 클릭하면, 페이지 천이해 버립니다만, 이번은 Ajax의 동작 확인을 하고 싶으므로, Ajax 버튼으로 동작 확인합니다.

    코드 내용



    index.html
    <!DOCTYPE html>
    <html lang="ja">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
        <form id="form_1" method="post" accept-charset="utf-8" return false>
            <p>名前 <input type="text" name = "userid" id ="userid"> </p>
            <p>パスワード <input type="text" name = "passward" id="passward"> </p>
        </form>
    
        <button id="ajax">ajax</button>
        <div class="result"></div>
    
        <script type="text/javascript">
    
            $(function(){
                // Ajax button click
                $('#ajax').on('click',function(){
                    $.ajax({
                        url:'./request.php',
                        type:'POST',
                        data:{
                            'userid':$('#userid').val(),
                            'passward':$('#passward').val()
                        }
                    })
                    // Ajaxリクエストが成功した時発動
                    .done( (data) => {
                        $('.result').html(data);
                        console.log(data);
                    })
                    // Ajaxリクエストが失敗した時発動
                    .fail( (data) => {
                        $('.result').html(data);
                        console.log(data);
                    })
                    // Ajaxリクエストが成功・失敗どちらでも発動
                    .always( (data) => {
    
                    });
                });
            });
    
        </script>
    </body>
    </html>
    

    request.php
    <?php
        header('Content-type: text/plain; charset= UTF-8');
        if(isset($_POST['userid']) && isset($_POST['passward'])){
            $id = $_POST['userid'];
            $pas = $_POST['passward'];
            $str = "AJAX REQUEST SUCCESS\nuserid:".$id."\npassward:".$pas."\n";
            $result = nl2br($str);
            echo $result;
        }else{
            echo 'FAIL TO AJAX REQUEST';
        }
    ?>
    

    결과





    코드 내용 설명



    일반



    흐름으로는
    폼에 입력하여 송신→jquery의 버튼 이벤트 발화→ajax 처리 기동→지정된 url,type,data로 리퀘스트→요청처에서 데이터를 받는 리스폰스→리스폰스 데이터를 처리→화면에 반영

    2014년의 기사가 됩니다만, Ajax의 내용의 설정에 대해서는, 여기 의 기사를 참고해 주세요. 이해하기 쉽습니다.

    통신 결과 처리



    이전에는 success, error라고 하는 방법으로 ajax가 성공·실패했을 경우의 분기를 쓰고 있었습니다만, 이렇게 하면 콜백 지옥에 빠져 버리므로, Promise 인터페이스를 이용해, done, fail로 분기 처리시킨다 이렇게 된 것 같다. 또한 성공 또는 실패 처리에 모두 호출되는 always 함수도 있습니다.
     
    done : 통신 성공
    always : fail을 포함한 처리가 완료되면 시작
    fail : 통신 실패

    응답 데이터



    이번 샘플에서는, 여기에 userid, passward의 폼의 데이터가 포함된 캐릭터 라인의 응답을 처리하고 있습니다. 여기에서는 data라는 인수를 사용하고 있습니다만, 다른 이름으로도 가능합니다.

    결론



    다음은 Fastly, ServiceWorker를 만져보고 싶습니다.
     Twitter: 프로그램의 이야기와 가다랭이기 때문에, 부담없이 팔로우해 주세요
    htps : // 라고 해서 r. 코 m / 자키 야마 아 아

    참고 URL


  • JavaScript(jQuery)에서 PHP API 사용
  • jQuery.ajax() 요약
  • jquery ajax 공식
  • 좋은 웹페이지 즐겨찾기