我正在使用CodeIgniter和JavaScript / jQuery构建一个bookmarklet应用程序。现在我的CI应用程序只是将一个JSON编码的数组返回到bookmarklet脚本,但显然jQuery将无法使用它,因为它不是JSONP /跨域策略问题。
如何让我的CodeIgniter函数返回JSONP结果?我对JSONP没有最好的理解,所以请原谅我的无知。
答案 0 :(得分:0)
据我所知,JSONP只是从URL加载脚本而不是制作XHR。该URL将返回javasript,而不是返回json / xml / plain-text。返回的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