2010-12-13 2 views
0

저는 CodeIgniter 및 JavaScript/jQuery를 사용하여 북마크릿 앱을 제작하고 있습니다. 지금 CI 애플리케이션은 JSON 인코딩 된 배열을 북마크 스크립트에 반환하는 것이지만 jQuery는 JSONP/도메인 간 정책 문제가 아니기 때문에 분명히이를 사용할 수 없습니다.JSONP, CodeIgniter 및 Bookmarklets

CodeIgniter 함수가 JSONP 결과를 반환하도록하려면 어떻게해야합니까? JSONP에 대해 잘 이해하지 못해서 제 무지를 용서하십시오.

+0

코드가 첫 번째 게시물이면 두 번째로 올바른 헤더 (http://snippets.dzone.com/posts/show/5882)를 설정합니까? –

답변

0

JSONP은 내가 아는 한 XHR을 만드는 대신 URL에서 스크립트를로드하는 것입니다. json/xml/plain-text를 반환하는 대신 URL은 javasript를 반환합니다. 반환 된 자바 스크립트는 JSON 데이터가 전달 된 전역 함수에 대한 호출 일뿐입니다. jQuery는 JSONP 요청 전에이 전역 함수를 편리하게 생성하고 JSONP 요청 내에서이 식별자를 "콜백"으로 전송합니다.

간단히 말하면 $ _GET [ 'callback']에 액세스해야합니다 (크로스 도메인에 $ .get을 사용해야 함). 콜백 함수의 이름을 보유합니다. 예 :

<?php echo $_GET['callback']."(".json_encode($arrayJSONData).")"; ?> 

json 데이터가 전달 된 글로벌 JavaScript 함수를 호출하는 javascript가 반환됩니다.

이것은 XHR/Ajax가 아니라 새로운 DOM 스크립트 요소를 동적으로 추가한다는 것을 의미하므로 데이터를 POST 할 수 없으므로 $ _POST가 없습니다. HTML로 스크립트 요소를 만들면 어떻게 POST 데이터를 보냅니 까? 전달할 수있는 데이터는 GET입니다 : <script src='someurl.php?this=getdatastuff'></script>.

나는 그게 전부라고 생각합니다. xb