투케이2K

30. (Http/XMLHttpRequest) XMLHttpRequest 사용해 post body json 방식 요청 수행 실시 본문

Http & Api

30. (Http/XMLHttpRequest) XMLHttpRequest 사용해 post body json 방식 요청 수행 실시

투케이2K 2022. 11. 22. 17:25

[개발 환경 설정]

개발 툴 : Edit++

개발 기술 : XMLHttpRequest

 

[소스 코드]

    <!-- [CDN 로드 설정 수행 실시] -->
    <script src="https://code.jquery.com/jquery-latest.min.js"></script>





    <!-- [내부 자바스크립트 J쿼리 이벤트 지정] -->    
    <script>


        /**
         * // ------------------------------------
         * [요약 설명]
         * // ------------------------------------
         * 1. window.onload : 웹페이지 로드 완료 상태를 확인합니다
         * // ------------------------------------
         * 2. XMLHttpRequest : http 통신 수행을 지원합니다
         * // ------------------------------------
         */



        // [html 최초 로드 및 이벤트 상시 대기 실시]
        window.onload = function() {
            console.log("");
            console.log("=========================================");
            console.log("[window onload] : [start]");
            console.log("=========================================");
            console.log("");


            // [테스트 함수 호출 실시]
            testMain();
        };



        // [test 함수 정의 실시]
        function testMain(){
            console.log("");
            console.log("=========================================");
            console.log("[testMain] : [start]");
            console.log("=========================================");
            console.log("");

            // -----------------------------------

            // [url 및 전송 데이터 선언]
            var url = "https://jsonplaceholder.typicode.com/posts";

            var jsonData = new Object();
            jsonData["userId"] = 1;
            jsonData["id"] = 1;

            // -----------------------------------
                                                
            // [XMLHttpRequest 객체 생성 및 요청 수행]
            var xhr = new XMLHttpRequest();
            xhr.open("POST", url, true); // [전송 타입]
            xhr.setRequestHeader("content-type","application/json"); // [전송 헤더]

            console.log("");
            console.log("=========================================");
            console.log("[testMain] : [REQ] : [POST]");
            console.log("URL : "+ url);
            console.log("DATA : "+ JSON.stringify(jsonData));
            console.log("=========================================");
            console.log("");
            
            // -----------------------------------

            // [1] : [응답 상태 확인]
            /*
            xhr.onload = () => {
                console.log("");
                console.log("=========================================");
                console.log("[testMain] : [RES] : [POST]");
                console.log("readyState : "+ xhr.readyState);
                console.log("=========================================");
                console.log("");

                // [응답 상태 코드 확인 실시]
                if (xhr.status == 200 || xhr.status == 201){
                    console.log("");
                    console.log("=========================================");
                    console.log("[testMain] : [RES] : [POST]");
                    console.log("TYPE : "+ "SUCCESS");
                    console.log("STATUS : "+ xhr.status);
                    console.log("RESPONSE : "+ xhr.responseText);
                    console.log("=========================================");
                    console.log("");                      
                }
                else {
                    console.log("");
                    console.log("=========================================");
                    console.log("[testMain] : [RES] : [POST]");
                    console.log("TYPE : "+ "ERROR");
                    console.log("STATUS : "+ xhr.status);
                    console.log("RESPONSE : "+ xhr.responseText);
                    console.log("=========================================");
                    console.log("");                        
                }  
            };       
            // */

            // -----------------------------------

            // [2] : [응답 상태 확인]
            //*
            xhr.onreadystatechange = function() {

                // [complete 완료 상태 인 경우]
                if (xhr.readyState == 4) { 

                    // [응답 상태 코드 확인 실시]
                    if (xhr.status == 200 || xhr.status == 201){
                        console.log("");
                        console.log("=========================================");
                        console.log("[testMain] : [RES] : [POST]");
                        console.log("TYPE : "+ "SUCCESS");
                        console.log("STATUS : "+ xhr.status);
                        console.log("RESPONSE : "+ xhr.responseText);
                        console.log("=========================================");
                        console.log("");                      
                    }
                    else {
                        console.log("");
                        console.log("=========================================");
                        console.log("[testMain] : [RES] : [POST]");
                        console.log("TYPE : "+ "ERROR");
                        console.log("STATUS : "+ xhr.status);
                        console.log("RESPONSE : "+ xhr.responseText);
                        console.log("=========================================");
                        console.log("");                        
                    }                   
                }               
            };
            // */

            // -----------------------------------

            // [전송 요청 : body 데이터 첨부]
            xhr.send(JSON.stringify(jsonData));

            // -----------------------------------

        };


    </script>
 

[결과 출력]

 

 

반응형
Comments