Laravel 6.x 비동기 통신(Ajax) [JavaScript] [jQuery] [axios] [Vue.js] 각 기술 방법~ JavaScript 편~

제작 환경


Windows 10
Laravel : 6.18.35
Laravel/ui : 1.0
Laravel-mix : 5.0.1
Bootstrap : 4.0.0
axios : 0.19
Vue : 2.5.17
XAMPP
PHP : 7.4.3
Visual Studio Code

개시하다


이 보도는 프로그래밍을 막 시작한 문외한으로 필기를 하는 데 쓰인다.
내용에 오류가 있을 수 있습니다.
지난번 계속해.

관련 보도


Laravel 6.비동기 통신(Ajax) [JavaScript] [jQuery] [axios] [Vue.js] 각 기술 방법~ 사전 준비 편~
Laravel 6.x 비동기 통신(Ajax) [JavaScript] [jQuery] [axios] [Vue.js] 각 기술 방법~ jQuery 편~
Laravel 6.x 비동기 통신(Ajax) [JavaScript] [jQuery] [axios] [Vue.js] 각 기술 방법~ JavaScript× axios편~
Laravel 6.x 비동기 통신(Ajax) [JavaScript] [jQuery] [axios] [Vue.js] 각 기술 방법~ jQuery× axios편~
Laravel 6.비동기 통신(Ajax) [JavaScript] [jQuery] [axios] [Vue.js] 각 기술 방법~Vue.js × axios편~
Laravel 6.x 비동기 통신(Ajax) [JavaScript] [jQuery] [axios] [Vue.js] 각 기술 방법~ JavaScript× FetchAPI 편~
Laravel 6.x 비동기 통신(Ajax) [JavaScript] [jQuery] [axios] [Vue.js] 각 기술 방법~ jQuery× FetchAPI 편~

이번에 만든 거.


비동기 통신(Ajax)을 사용하여 공급업체를 자동으로 입력하는 기능을 실현한다.

다음 생성 기준

  • 기술은 JavaScript를 사용합니다.
  • 4자리 숫자를 입력하면 공급업체가 자동으로 검색하여 반영합니다.
  • 검색은 클릭 조작이 필요 없습니다.input를 입력하여 검색합니다.
  • 를 사용하여 자바스크립트를 읽습니다.
  • 그림 완성



    스크립트 만들기

    Laravel-mix 내에 새로 만들기resources>js는 다음과 같다.
    test.js
    // DOM 構築後に実行したい関数の呼び出し
    window.onload = function() {
    
        // inputのid="code"(業者コード)の要素を取得し、inputイベントを監視します
        // 業者コードに値が入力されたら以下の内容を実行します
        document.getElementById('code').addEventListener('input', function() {
    
            // 入力された値を変数traderCodeに代入します
            let traderCode = document.getElementById('code').value;
    
            // 入力された値が4桁未満の時は検索させないようにします
            if (traderCode.length < 4) {
                return;
            }
    
            // XMLHttpRequest オブジェクトを作成します
            let xhr = new XMLHttpRequest();
    
            // 非同期通信でアクセスするURLを作成しurlに代入します
            let url = '/form_search?trader_code=' + traderCode;
    
            // open('アクセスの方法', 'アクセス先')
            // アクセス方法は GETやPOSTです
            // アクセス先は作成したurlです
            xhr.open('GET', url);
            // 通信を開始します
            xhr.send();
    
            // 通信状態が変化した時に発火するイベントを設定します
            xhr.onreadystatechange = function() {
                // 通信状態の確認を行い、エラーがなければ後の処理を実行します
                if (xhr.readyState === 4 && xhr.status === 200) {
    
                    // コントローラから受け取るデータ(検索結果)の文字列を JSON として解析し
                    // dataに代入します
                    // responseTextでデータを受け取れます
                    let data = JSON.parse(xhr.responseText);
    
                    // 受け取ったデータ(検索結果)を仕入れ先のvalueに反映します
                    document.getElementById('supplier').value = data[0].trader_name;
    
                }
            }
        })
    }
    

    readyState 및 status 정보

    test.js 통신 상태를 확인할 수 있습니다.readyState의 값은 다음과 같다.

    컨디션
    컨텐트
    0
    준비 단계
    아직 통신 상태가 아닙니다.
    2
    통신 시작
    서버와 통신을 시작한 상태
    3
    받는 중
    서버에서 데이터를 가져오는 상태
    4
    통신 완료
    데이터 검색 및 통신 종료 상태
    확인readyState을 통해 통신 중 발생한 오류를 처리할 수 있습니다.status의 주요치는 다음과 같다.

    컨디션
    컨텐트
    200
    성취
    원활한 통신 성공 상태
    401
    잘못
    인증 필요 통신이 불가능한 상태
    403
    잘못
    통신 불가 상태에 대한 액세스 차단
    404
    잘못
    정보가 존재하지 않아 통신할 수 없는 상태
    500
    잘못
    서버 측의 일부 고장으로 인해 통신이 불가능한 상태
    503
    잘못
    서버 부하로 통신할 수 없는 상태

    app.js에 등록

    status에서 생성된 Laravel-mix는 읽을 수 있습니다.test.js내의 resources>js를 열고 app.js의 아래에 다음과 같은 기술을 보충한다.
    app.js
    require('./test');
    

    webpack.mix.js 수정

    require('./bootstrap'); 를 연 후 다음과 같이 수정합니다.
    수정 전
    webpack.mix.js
    mix.js('resources/js/app.js', 'public/js')
        .sass('resources/sass/app.scss', 'public/css');
    
    수정 후
    webpack.mix.js
    mix.js('resources/js/app.js', 'public/js')
        .sass('resources/sass/app.scss', 'public/css')
        .version();
    
    이전 캐시를 읽지 않기 위해서 이 수정이 진행 중입니다.

    편역하다


    터미널을 시작하고 다음 동작을 실행하십시오.
    ※node.js가 필요합니다.설치하지 않은 사람은 설치하십시오.
    node.js
    https://nodejs.org/ja/
    npm run dev
    

    편집 컨트롤러


    마지막으로 작성된 FormControllerphp를 열면 다음과 같은 방법을 보충해 주십시오.
    FormController.php
    public function get_trader(Request $request)
    {
        // リクエストパラメータからtrader_codeを取得し$traderCodeに代入します
        // リクエストパラメータはURLで送られてくる値です
        // /form_search?trader_code=●● この●●の部分を取得してます
        $traderCode = $request->trader_code;
    
        // traderテーブルから、trader_codeが業者コードに入力された値と同じものを抽出し
        // $traderTableに代入します
        $traderTable = Trader::where('trader_code', '=', $traderCode)->get();
    
        // $traderTableを返します(これでtest.jsのresponseTextにデータが渡されます)
        return $traderTable;
    }
    

    라우팅 편집

    webpack.mix.jsroutes를 열고 다음과 같은 내용을 보충한다.
    web.php
    Route::get('/form_search', 'FormController@get_trader')->name('ajax');
    

    확인


    공장 코드를 입력하여 공급업체가 반영되었는지 확인하세요.
    업자 코드와 업자 이름이 미리 등록되지 않으면 반영되지 않으니 주의하세요.

    이미지 검색


    입력한 값이 4자리이면 읽어들이고 반영됩니다.

    JavaScript 편은 여기서 끝냅니다.
    수고하셨습니다.

    좋은 웹페이지 즐겨찾기