본문 바로가기
개발/jQuery

JSONP ????

by 비손 2010. 8. 3.
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 데이터를 괄호로 묶고 그 앞에 붙여준게 다구요~

수신측(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=? 라고 적어서 보내주기만 하면 됩니다.

이제 크로스 도메인 크로스 브라우저로 JSON을 이용하면 되죠! ㅋㅋ