繁体   English   中英

PHP编码的JSON到模板和JavaScript

[英]php encoded json to template and javascript

我正在使用Codeigniter和Smarty(模板引擎),因此正在使用模板。

我有一种方法可以调用具有所有html,css和js函数的模板:

public function index()
{
    //dashboard text
    $this->data['title'] = 'Dashboard';
    $this->data['subtitle'] = 'feeds, users, and more';

    //load the donut graph data
    $fbyg = $this->feed_model->countFeedsByGroups();
    echo json_encode($fbyg);

    //parses the dashboard template
    $this->smartyci->display('dashboard.tpl', $this->data);
}

事实是,我需要向绑定到我的dashboard.tpl的js文件之一发送一些信息,以便呈现图形。

所以我知道我必须将php数组编码为jSon对象,并将其发送到模板。 但是,当我不仅要用json发送和回显,而且还必须显示发送其其他信息的模板时,该怎么办?

另一个问题是,如何接收json并获取数据? 我正在尝试,到目前为止没有结果:

从我的dashboard.tpl:

    <script src="{site_url()}application/views/js/test.js"></script>
    <script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js'></script>

从test.js:

$.getJSON('admin.php', function(data) {
    console.log(data.vgro_name);
});    

您可以将其设置为

$this->data['fbyg'] = json_encode($fbyg);

然后在你的JavaScript中

var yourVar = <?php echo $fbyg ?>;

一个更干净的解决方案是对一个函数进行ajax调用,该函数将返回类似

$fbyg = $this->feed_model->countFeedsByGroups();
echo json_encode($fbyg);

页面加载后。

编辑jQuery ajax得到:

$.ajax({
  type: "GET",
  url: "urlToYourFunction",
  success: function(data){
     var yourVar = data;
  }
});

我只用angularjs和jquery进行了get和post请求,但是这是另一个stackoverflow帖子,详细介绍了如何使用常规javascript来实现:

https://stackoverflow.com/a/18078705/3739551

我希望这有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM