2010-12-13 4 views
0

私はCodeIgniterとJavaScript/jQueryを使ってブックマークレットアプリを構築しています。現在、CIアプリケーションはブックマークレットスクリプトにJSONエンコードされた配列を返すだけですが、JSONP /クロスドメインポリシーの問題ではないため、jQueryはこれを使用できません。JSONP、CodeIgniter、Bookmarklets

CodeIgniter関数がJSONP結果を返すようにするにはどうすればよいですか?私はJSONPをよく理解していないので、私の無知を許してください。

+0

最初の投稿はコード、もう1つは正しいヘッダー(http://snippets.dzone.com/posts/show/5882)を設定していますか? –

答えて

0

私の知る限り、JSONPはXHRを作る代わりにURLからスクリプトを読み込んでいます。 json/xml/plain-textを返すのではなく、URLはjavasriptを返します。返されるjavascriptは、JSONデータが渡されたグローバル関数への呼び出しになります。 jQueryは、JSONPリクエストの前にこのグローバル関数を作成し、そのIDを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