大家都知道AJAX传回来的数据有三种,文本,JASON,XML
我现在希望他传回的数据类型四JASON
我在控制器里这样定义:
$a=10;
$Jason='{"number":"$a"}'
这样写为什么不行啊?他传回来的值是$a而不是 10?
有人说你把10放进去就行了,这点我明白可是如果你从数据库里取出来的值怎么办?
例如
$a= $row['content'];
//echo $a;//这样能取出来数据库里值
$Jason='{"content":"$a"}';//这样就是不行;
我要是这样写$Jason='{"content":"$row['content']"}';//就是把$a 直接替换成$row['content'];
他会提示语法错误 ;
难道JASON中的值不能用变量替换吗?
如果不能替换,那怎么从数据库中取出值,上面的$JASON格式该怎么改啊?
回复讨论(解决方案)
json不是以数组的形式返回么,里面能用变量?
$Jason='{"content":"$a"}';
/这样不行的原因是:单引号中的变量是不会被替换成值的
可写作
$Jason = "{\"content\":\"$a\"}";
或
$Jason = sprintf('{"content":"%s"}', $a);
其实 php 已经提供了 json_encode 函数,可轻松的将各种变量转换成 json 格式串
;
这样写试试$Jason='{"number":" '.$a. '"}'
单引号不解析变量和大部分转义,只有双引号才可以
直接用php 的json_encode()杠杠的
直接用php 的json_encode()杠杠的
问题有2个,网页编码GBK,用JSON_ENCODE()显示的结果为空?怎么处理?
第2个用了Json_encode()汉字不能正常显示,传给JS的显示的是进制数
直接用php 的json_encode()杠杠的
问题有2个,网页编码GBK,用JSON_ENCODE()显示的结果为空?怎么处理?
第2个用了Json_encode()汉字不能正常显示,传给JS的显示的是进制数
给 ajax 用的 json 数据都是动态I数据,让数据库返回 utf-8 的数据就可以了
任何编码的数据到了浏览器都被转换成了 unicode 编码, json_encode 先做了,并没有什么不好
使用php 的json_encode就可以。如果不是utf8数据,可以使用iconv('GBK','UTF',$content); 转一下然后再json_encode。
$a=10;$arr = array('number'=>$a);$Jason = json_encode($arr); //{"number":10}echo $Jason;
$a=10;$arr = array('content'=>$a);$Jason = json_encode($arr); // {"content":10}echo $Jason;