본문 바로가기
WEB/JQuery

AJAX

by 노랑파랑 2016. 10. 19.
반응형





JQuery를 이용해서 Ajax를 사용하면 크로스브라우징 문제를 자동으로 처리해주고, 편리한 기능을 제공한다.

JQuery의 Ajax API는 이쪽으로 -->> http://api.jquery.com/category/ajax/



$.ajax 기본 문법

JQuey.ajax ( [ setting ] );

    • setting     :    Ajax를 위한 옵션을 담고있는 객체

* data    :    데이터를 서버로 전송할 때 사용하는 옵션

* dataType    :    서버특에서 전송한 데이터를 어떤 형식의 데이터로 해석할 것인가를 지정한다. 

값으로 올 수 있는 것은 xml, json, script, html이다. 지정하지 않는다면 JQuery가 알아서 판단한다.

* success    :    성공했을 때 호출할 콜백을 지정한다. Fucntion ( PlainObject data, String textStatus, jqXHR jqXHR )

* type    :    데이터 전송 방법을 지정한다. get / post를 사용할 수 있다.


    


document 객체 사용과 JQuery 사용 Ajax 코드 비교 ( 당연히 서버php 의 변화 없음)

* document

document.querySelector('input').addEventListener('click', function(event){
    var xhr = new XMLHttpRequest();
    xhr.open('GET', './time.php');
    xhr.onreadystatechange = function(){
        if(xhr.readyState === 4 && xhr.status === 200){
            document.querySelector('#time').innerHTML = xhr.responseText;
        }
    }
    xhr.send(); 
}); 


* JQuery

 $('#execute').click(function(){
        $.ajax({
            url:'./time.php',
            success:function(data){
                $('#time').append(data);
            }
        })
    })




POST 방식 

* 예제 ( 시간대와 시간의 출력 - JavaScript 예제와 같다 )

<!-- time.php --> 
<?php
$d1 = new DateTime;
$d1->setTimezone(new DateTimezone($_POST['timezone']));
echo $d1->format($_POST['format']);
?>>

<!-- ajax_jquery.html --> <p>time : <span id="time"></span></p> <form> <select name="timezone"> <option value="Asia/Seoul">asia/seoul</option> <option value="America/New_York">America/New_York</option> </select> <select name="format"> <option value="Y-m-d H:i:s">Y-m-d H:i:s</option> <option value="Y-m-d">Y-m-d</option> </select> </form>

<input type="button" id="execute" value="execute" />



// document와 다른 부분 <script src="//code.jquery.com/jquery-3.1.0.min.js"></script>

<script> $('#execute').click(function(){ $.ajax({ url:'./time.php', type:'post', data:$('form').serialize(), success:function(data){ $('#time').text(data); } }) }) </script>


- data:$('form').serialize()    :    form의 정보를 값의이름 = 값의 내용 & 값 형식으로 바꿔준다.




JSON 처리

<!-- time.php --> <?php $timezones = ["Asia/Seoul", "America/New_York"]; echo json_encode($timezones); ?> <!-- json_jquery.html --> <p id="timezones"></p> <input type="button" id="execute" value="execute" /> <script src="//code.jquery.com/jquery-1.11.0.min.js"></script> <script> $('#execute').click(function(){ $.ajax({ url:'./time.php', dataType:'json', success:function(data){ var str = ''; for(var name in data){ str += '<li>'+data[name]+'</li>'; } $('#timezones').html('<ul>'+str+'</ul>'); } }) }) </script>

반응형

'WEB > JQuery' 카테고리의 다른 글

레퍼 Wrapper  (0) 2016.10.17
이벤트  (0) 2016.10.17
Node 변경  (0) 2016.10.15
조회 제한  (0) 2016.10.15
속성 제어  (0) 2016.10.15