2010-12-13 53 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