JQuery $.ajax()

Jmnote (토론 | 기여)님의 2019년 7월 24일 (수) 16:13 판 (100.96.1.249(토론)의 편집을 Jmnote bot의 마지막 판으로 되돌림)

1 개요

jQuery.ajax()
$.ajax()
  • 비동기 HTTP 요청 수행
  • jQuery를 통해 보내지는 모든 Ajax 요청의 기본임

2 설명

$.ajax(url [, settings])
  • url : 요청될 URL [String 타입]
  • settings : 키/값 형태로 요청과 관련 세부 설정 [PlainObject 타입]
    • data : 서버로 전달될 데이터 [PlainObject / String / Array]
    • dataType : 서버로부터 전달 받기를 원하는 데이터 타입 [xml, html, json, text...]
    • method[type] : 요청할 HTTP 방식 [GET, POST, PUT..]
    • success : 요청이 성공할 경우 호출될 함수 [Function(Aything data, String textStatus, jqHXR jqXHR)]

3 $.ajax()

  • 옵션 없이 $.ajax()를 실행하면 단순히 현재 페이지를 불러오며, 그 결과로 아무런 처리를 하지 않음
$.ajax();

4 jqXHR Object

  • jqXHR은 jQuery XMLHttpRequest Object임
  • $.ajax()에 의해 리턴된 Object임
  • jqXHR은 각 브라우저의 XMLHttpRequest Object를 모두 포함함. (따라서 responseText, responseXML, getResponseHeader()을 기본적으로 모두 포함)

5 jqXHR Object 예시

  • jqXHR은 $.ajax()로 부터 리턴을 받으며 jqXHR은 다양한 메쏘드와 프라퍼티를 함께 가짐. ( Promise interface 참조 )
  • jqXHR의 다양한 메쏘드는 하나 이상의 콜백 함수를 인자로 가지며, $.ajax() 요청이 완료될 때 호출됨
  • 아래 예제의 $.ajax에 의한 요청이 성공적으로 수행되어 jqXHR Object를 돌려 받은 후 done 메쏘드를 실행함. 이때 data는 jqXHR 에서 동일한 형태로 곧장 돌려 받음
$.ajax({
    url: "http://fiddle.jshell.net/favicon.png",
    beforeSend: function( xhr ) {
        xhr.overrideMimeType( "text/plain; charset=x-user-defined" );
    }
}).done(function( data ) {
    if ( console && console.log ) {
        console.log( "Sample of data:", data.slice( 0, 100 ) );
    }
});

6 예시

<script src="//code.jquery.com/jquery.min.js"></script>
<script>
$.ajax({
	url: "http://example.zetawiki.com/txt/utf8test.txt",
}).done(function(data) {
	document.write(data);
});
</script>

7 $.ajax() 디버깅

  • ajax() 요청을 통해 프로그래밍을 하다 에러가 발생 할 경우 어떤 이유로 에러가 발생하는지 알 수 없기 때문에 error() 요소를 사용하여 원인을 알아냄
    $(document).ready(function(){
        $("#fSubmit").click(function(){
            var dataString = {
                id:$("#fId").val(),
                tag:$("#fTag").val(),
                description:$("#fDescription").val(),
            };
            $.ajax({
                url:"{{route('tag.store')}}",
                method:"POST",
                dataType:"json",
                data:dataString,
                success:function(jData) {
                    $.each(jData, function(key, val){ 
                        console.log(key);
                        console.log(val);
                    });
                },
                error:function(request,status,error){ 
                    alert(request.status + "\n" + request.responseText + "\n" + error);
                }
            });
        });
    });

8 $.ajax() 사용시 유의할 점

  • ajax를 통해 form의 값을 전송 할 경우 <input type="submit"....> 형태가 아니나 <button type="button"...> 을 사용하는 것이 좋음. 다시말해 form문이 ajax코드 없이 자체적으로 submit 버튼을 통해 전송 되지 않는지 명확히 한 후 ajax 전송 부분을 구현
<form id="form_person">
    <input type="text" id="form_name" placeholder="name">
    <input type="text" id="form_age" placeholder="age">
    <button type="button" id="form_submit">Send</button>
</form>

9 같이 보기

10 참고

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}