2010-12-13 83 views
0

我正在用CodeIgniter和JavaScript/jQuery構建一個小書籤應用程序。現在我的CI應用只是將一個JSON編碼數組返回給小書籤腳本,但顯然jQuery無法使用它,因爲它不是JSONP /跨域策略問題。JSONP,CodeIgniter和Bookmarklets

如何讓我的CodeIgniter函數返回JSONP結果?我對JSONP沒有最好的理解,所以請原諒我的無知。

+0

第一篇文章你的代碼,第二你設置正確的標題(http://snippets.dzone.com/posts/show/5882)? – 2010-12-13 05:54:53

回答

0

據我所知,JSONP只是從URL加載腳本而不是製作XHR。 URL不會返回json/xml /純文本,而會返回javasript。返回的javascript只是對傳遞JSON數據的全局函數的調用。 jQuery方便地在JSONP請求之前創建這個全局函數,並在JSONP請求中將其標識符作爲「回調」發送。簡而言之,您必須訪問$ _GET ['callback'](必須使用$ .get作爲跨域),它包含回調函數的名稱。例如:

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

這將返回JavaScript,它調用傳遞給它的json數據的全局javascript函數。

請記住,這不是XHR/Ajax,而是動態地附加一個新的DOM腳本元素,您不能POST數據,因此沒有$ _POST。如何在HTML中創建腳本元素時發送POST數據?它的GET數據只能通過:<script src='someurl.php?this=getdatastuff'></script>

我認爲這就是它的一切。 xb