1 minute read

jQuery Ajax : 파일 로드 및 서버와 Ajax 통신

파일 로드

$(객체).load(filename);

  • 파일로드 시 오류가 발생한 경우 예외 처리 방법

    $(객체).load(filename, function(responseText, status, xhr){…}
    function(responseText, status, xhr) ➡️ callBack 함수

코드 예제

    <script src="https://code.jquery.com/jquery-3.6.1.min.js"></script>
    <script>
        $(document).ready(function(){
            $("#btn01").click(function(){
                $("#result00").load("text.txt");
            });
            $("#btn02").click(function(){
                $("#result00").load("text.htm");
            });
            $("#btn03").click(function(){
                $("#result00").load("text.xml");
            });
            $("#btn04").click(function(){
                $("#result00").load("text1.txt", function(responseText, status, xhr){
                    if(status == "success") $("#result00").text(responseText);
                    if(status == "error") $("#result00").text("error : " + xhr.status + "/ " + xhr.statusText);
                });
            });
        })
    </script>

    <button id="btn01">txt 로드</button>   
    <button id="btn02">htm 로드</button>  
    <button id="btn03">xml 로드</button>
    <button id="btn04">txt 로드(예외처리)</button>
    <div id="result00"></div>

AJAX 메소드로 서버에 파일 로드

  • jQuery 메소드를 이용하여 서버에 파일을 로드할 수 있다.
  • 파일 종류: Text, HTML, XML, JSON
  • 전송 방식 : GET, POST

  • 주요 메소드

    $.ajax(), $.get(), $.post(), $.getJSON(), $.parseJSON()
    load(), ajaxSend(), ajaxSuccess(), ajaxError()

  • $.ajax() : HTTP 요청 메소드
      $.ajax({
          url: filename,
          type: GET/POST,
          dataType: txt, html, xml, json..,
          success: callBack
      });
    

$.ajax() 사용 코드 예제

    <script>
        $(document).ready(function(){
            $("#agax05").click(function(){
                var filename = document.ajax_test.filename.value;
                var selType = selectType(filename);
                // http 요청
                $.ajax({
                    url: filename,
                    type: 'GET',
                    dataType: selType,
                    success: Task(result)
                });
            });
        });

        function selectType(filename){
            switch(filename){
                case "text.txt": 
                    return ("text");
                
                case "text.htm": 
                    return ("html");

                case "text.xml": 
                    return ("xml");
                
                default:
                    return ("text");
            }
        }

        function Task(result){
            showResult(result);
        }

        function showResult(result){
            switch(document.ajax_test.showType.value){
                case "text":
                    $("#result").text(result); break;
                case "html":
                    $("#result").html(result); break;
            }
        }

    </script>

    <form name="ajax_test">
        <input type="radio" name="filename"  value="text.txt" checked />Text
        <input type="radio" name="filename"  value="text.htm" />HTML
        <input type="radio" name="filename"  value="text.xml" /> XML
        <input type="radio" name="filename"  value="text1.txt" />None
        <br>
        <input type="radio" name="showType"  value="text" checked /> .text(result)  
        <input type="radio" name="showType"  value="html" /> .html(result)
        <input type="radio" name="showType"  value="alert" /> alert(result) 
        <input type="button" id="ajax05" value="결과 보기">
        <div id="result"></div>
    </form>

$.get()/$.post() 사용 코드 예제

$.get(URL, 콜백함수)
$.post(URL, data, 콜백함수)

    <script>
        $(document).ready(function(){
            $("#get01").click(function(){
                $.get("text.txt", function(result){
                    result00.innerText = result;
                });
            });

            $("#get02").click(function(){
                $.get("text.htm", function(result){
                    result00.innerHTML = result;
                });
            });
            
            $("#post01").click(function(){
                $.post("text.txt", {
                    // data..
                },
                function(data, status){
                    alert("Data : " + data + " Status : " + status);
                });
            });
        });
    </script>

    <button id="get01"> $.get() text" </button>
    <button id="get02"> $.get() html" </button>
    <button id="post01"> $.post() text" </button>
    <div id="result00"></div>