ThinkPHP 控制器里面的数组 如何在模板JS里面调用数组$riqi,并按图中格式弹出

JS里面for循环数组里面的i+1没有起到效果,弹出结果全部是$riqi[0][0]的值

//控制器里面
$array = array(array(),array().....);//php控制器里定义的数组
$str = json_encode($array);//数组转成JSON格式的字符串方便后面传入模板
$this->str = $str//将转换成JSON格式的字符串发送到页面模板,$this->assign('str ',$str )这种形式也可。页面中$str就可以直接使用了。

//前端页面
使用jquery的$.each 可以很方便的 将控制器中传过来的json字符串循环处理.
<script type="text/javascript">
$jsobject = eval('(' + {$str} + ')');//将json字符串转成对象({$str}也可以是常规的php输出<?php echo $str;?>)
$.each($jsonject.function(a,b){
    alert(a);//输出数组的键
    alert(b);//输出数组的值
});
</script>

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-11-25
你应该将php数组转为json格式,然后前台js中按json对象处理
json_encode():将数组转换成json数据存储格式追问

是在控制器里面就把数组转格式吗? 转换后怎么获取到数组呢

追答

1、是在控制器里面就把数组转格式吗?

$json = json_encode($array_name);
$this->assign('json',$json);

2、转换后怎么获取到数组呢?

前台页面的js也还是在模板中啊,模板中使用内置的模板引擎输出变量的方法:{$json}

即便你在js代码中,也是这么用

追问

$json是一个二维数组,那我要怎么把这个二维数组赋值给别的数组呢 JS里面的for循环i值递增正确,就是数组取i对应值不正确,那要怎样写,才能取到对应i的值呢

追答

假如你确定js里获取的变量是数组或对象的话,可以用这种形式的for循环啊:

for i in arrayData
    alert(arayData[i]);

本回答被提问者和网友采纳
相似回答