[英]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.