想实现的功能为:
先从数据库读取一个二维数组:
$rows=$cnAppCenter->getStations($table,$col,$pid);
$num=count($rows);
$result=array();
for($i=0;$i< $num ;$i++){
$result[]=array(
'id'=>$rows[$i]['id'],
'bid'=>$rows[$i]['bid'],
'destination'=>$rows[$i]['destination']
);
}
比如这个数组打印为:
Array
(
[0] => Array
(
[id] => 27
[bid] => 3
[destination] => 乌江入境
) [1] => Array
(
[id] => 28
[bid] => 3
[destination] => 白涛工业园
)
)
然后用调用json_encode:$da=JSON($result);
<script language="javascript">
var datas = eval(<?php echo $da;?>);
alert(eval(datas[0]['id']));
</script>
为什么会报datas 为空呢?请各位大侠帮帮忙,先谢了~
function arrayRecursive(&$array, $function, $apply_to_keys_also = false){ static $recursive_counter = 0; if (++$recursive_counter > 1000) { die('possible deep recursion attack'); } foreach ($array as $key => $value) { if (is_array($value)) { arrayRecursive($array[$key], $function, $apply_to_keys_also);
} else {
$array[$key] = $function($value);
}
if ($apply_to_keys_also && is_string($key)) {
$new_key = $function($key);
if ($new_key != $key) {
$array[$new_key] = $array[$key];
unset($array[$key]);
}
}
}
$recursive_counter--;
}
function JSON($array) {
arrayRecursive($array, 'urlencode', true);
$json = json_encode($array);
return urldecode($json);
}
先从数据库读取一个二维数组:
$rows=$cnAppCenter->getStations($table,$col,$pid);
$num=count($rows);
$result=array();
for($i=0;$i< $num ;$i++){
$result[]=array(
'id'=>$rows[$i]['id'],
'bid'=>$rows[$i]['bid'],
'destination'=>$rows[$i]['destination']
);
}
比如这个数组打印为:
Array
(
[0] => Array
(
[id] => 27
[bid] => 3
[destination] => 乌江入境
) [1] => Array
(
[id] => 28
[bid] => 3
[destination] => 白涛工业园
)
)
然后用调用json_encode:$da=JSON($result);
<script language="javascript">
var datas = eval(<?php echo $da;?>);
alert(eval(datas[0]['id']));
</script>
为什么会报datas 为空呢?请各位大侠帮帮忙,先谢了~
function arrayRecursive(&$array, $function, $apply_to_keys_also = false){ static $recursive_counter = 0; if (++$recursive_counter > 1000) { die('possible deep recursion attack'); } foreach ($array as $key => $value) { if (is_array($value)) { arrayRecursive($array[$key], $function, $apply_to_keys_also);
} else {
$array[$key] = $function($value);
}
if ($apply_to_keys_also && is_string($key)) {
$new_key = $function($key);
if ($new_key != $key) {
$array[$new_key] = $array[$key];
unset($array[$key]);
}
}
}
$recursive_counter--;
}
function JSON($array) {
arrayRecursive($array, 'urlencode', true);
$json = json_encode($array);
return urldecode($json);
}
解决方案 »
- Apache64位如何载入Imagick?
- 登陆不了啊
- php正则匹配问题
- 怎么用一个段落中提取标题
- 模板问题,大家说说应该用哪一种啊》?---------------------------------------------
- 请问假如我已知三个表名,我如何取得这三个表所占MYSQL空间大小?
- 急,请帮我这段C程序转成PHP程序
- file("$temp")和explode("\n",$temp)有什么区别?
- <input name="addr" type="hidden" value="<?$ip?>">为什么错了!
- 关于php4.20版敏感字符转换问题
- 谁帮我匹配下URL
- PHP 写文件写不进去
$json = json_encode($array, true);至于arrayRecursive是否正确,你完全可以
arrayRecursive($array, 'urlencode', true);
print_r($array);
[{"id":"27","bid":"3","destination":"乌江入境"},{"id":"28","bid":"3","destination":"白涛工业园"}]
请问,怎样才能在js里使用呢?
2、你的 JSON 函数有可能破坏已生成的 json 数据的结构
function JSON($array) {
arrayRecursive($array, 'urlencode', true);
$json = json_encode($array);
return urldecode($json); //这里应为 return $json
}
人工进行 url 编码,将导致目标服务器要多一次 url 解码3、var datas = eval(<?php echo $da;?>); 这是错误的
eval 的参数应该是字符串,要写作
var datas = eval('<?php echo $da;?>');
其实你这样就可以了
var datas = <?php echo $da;?>;4、js 没有二维数组
alert(eval(datas[0]['id']));
应写作
alert(eval(datas[0].id);datas 是对象数组
如果我的数组是$data = array
(
array
(
'id' => 1,
'start_fee' => 1,
'end_fee' => '测试',
'fee_rate' => 0.14,
'addtime' => 0
),
array
(
'id'=> 2,
'start_fee' => 20,
'end_fee' => 100,
'fee_rate' => 0.11,
'addtime' => 0
)
);用alert(eval(datas[0]['end_fee']));能正确弹出"测试",但是一换回$result,就报null
alert(datas[0].end_fee); //这样也可以
另外的方法就是改用$.ajax();
function showMap(){
output_text.open('地图加载中.....',3,3);
var pid = $("#class1").val();
$.ajax({
type: "POST",
url: "index.php?action=map",
data: "uc=show&pid="+pid,
beforeSend: function(){
},
success: function(result){
load(result);
}
});
}
成功返回的result再传递给加载地图的函数来处理。