欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP关于AJAX一点疑惑

程序员文章站 2024-01-15 16:29:34
...
大家都知道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;