Javascript Codeigniter:在控制器中定义JSON变量

Javascript Codeigniter:在控制器中定义JSON变量,javascript,php,json,codeigniter,Javascript,Php,Json,Codeigniter,实际上,我想在我的控制器中定义一个json变量,并在我的js文件中访问它。 我曾经在yii框架中这样做,如下所示: Yii::app()->clientScript->registerScript('helpers', ' yii= {

实际上,我想在我的控制器中定义一个json变量,并在我的
js
文件中访问它。
我曾经在yii框架中这样做,如下所示:

Yii::app()->clientScript->registerScript('helpers', '                                                           
        yii= {                                                                                                     
           test: 'test'                                                                                                       
       };                                                                                                          
   ',CClientScript::POS_HEAD);
我可以像js文件中的
yii.test
一样访问它。
由于某些原因,我不想在视图页眉或页脚部分直接声明它。

提前感谢

您可以为此构建一个端点,并通过AJAX加载它。否则,将其打印到页面的某个位置(最好是
)几乎是将值从服务器传递到JS的唯一方法


此外,我不鼓励在PHP中手动编写JSON或JS对象。我建议您创建一个表示该对象的PHP数组/关联数组,并使用
json\u encode
将其转换为字符串。然后,您可以将其打印在页面上或通过AJAX发送。

非常感谢,我会等待任何其他答案,如果没有更好的答案,请将其标记为正确。但如果你能告诉我为什么不愿意这样做,我将不胜感激。这是因为关注点分离吗?@HosseinShahsahebi因为你可以写格式错误的对象或是用引号乱写。实际上我有一些问题。如果我想访问通过AJAX加载的全局变量,AJAX调用必须是页面顶层的
synchronous
,这将影响用户体验。我说得对吗?你有什么建议吗?顺便说一句,对不起,我不知道为什么我不能提到你。@HosseinShahsahebi如果你做AJAX,它不需要是全局的,也不需要在头脑中。但是,需要值的代码需要在回调返回后调用的函数中执行。@HosseinShahsahebi取决于具体情况。如果它们太小,只需在头部打印即可。如果它们是一组实用程序数据,您可以在一个AJAX调用中将它们捆绑起来。如果每个都是合格的资源,那么它们应该作为restful端点存在。没有硬性规定,只是一个指引。