JSON은 다들 아시리라 생각하는 상태에서 이야기를 풀어나가도록 하겠습니다.
혹시 모르는 분들을 위한 Wiki 링크!
장점 많은 JSON의 문제가 있었으니, 다른 도메인으로는 자료를 못 보낸다는 것....
근데 써 보니까, IE에서는 되더군요 FF에서만 다른 도메인으로 못 보내더라구요~ (다른 브라우저는 안해봤어요)
JSONP는 다른 도메인으로 JSON 데이터를 보내기 위한 방법이라고 합니다!
여튼 그래서 FF를 위해서 JSONP를 써 보기로 했습니다.
마침 jQuery 1.2 이상 버전 부터 JSONP를 지원한다고 하길래~ 아싸! 라고 했습니다 ㅋ
자료를 송신해 주는 쪽과 수신해 주는 쪽 모두 코드 수정이 필요하구요~
JSONP를 이용한 통신으로 변경한 경우에는, JSON 방식으로는 수신이 불가능 합니다.
송신측(PHP)
수신측(jQuery)
이제 크로스 도메인 크로스 브라우저로 JSON을 이용하면 되죠! ㅋㅋ
혹시 모르는 분들을 위한 Wiki 링크!
장점 많은 JSON의 문제가 있었으니, 다른 도메인으로는 자료를 못 보낸다는 것....
근데 써 보니까, IE에서는 되더군요 FF에서만 다른 도메인으로 못 보내더라구요~ (다른 브라우저는 안해봤어요)
JSONP는 다른 도메인으로 JSON 데이터를 보내기 위한 방법이라고 합니다!
여튼 그래서 FF를 위해서 JSONP를 써 보기로 했습니다.
마침 jQuery 1.2 이상 버전 부터 JSONP를 지원한다고 하길래~ 아싸! 라고 했습니다 ㅋ
자료를 송신해 주는 쪽과 수신해 주는 쪽 모두 코드 수정이 필요하구요~
JSONP를 이용한 통신으로 변경한 경우에는, JSON 방식으로는 수신이 불가능 합니다.
송신측(PHP)
기존: echo json_encode($arr);
변경후: echo $_GET['callback'].'('. json_encode($arr).');';
송신측에는 callback을 받아서 JSON 데이터를 괄호로 묶고 그 앞에 붙여준게 다구요~변경후: echo $_GET['callback'].'('. json_encode($arr).');';
수신측(jQuery)
기존: $.getJSON('http://domain.com/abcd.php','keyword='+encodeURIComponent(keyword),function(data){});
변경후: $.getJSON('http://domain.com/abcd.php','keyword='+encodeURIComponent(keyword)+'&callback=?',function(data){});
수신측에서는 callback=? 라고 적어서 보내주기만 하면 됩니다.변경후: $.getJSON('http://domain.com/abcd.php','keyword='+encodeURIComponent(keyword)+'&callback=?',function(data){});
이제 크로스 도메인 크로스 브라우저로 JSON을 이용하면 되죠! ㅋㅋ