Heim >Backend-Entwicklung >PHP-Tutorial >求助!!php json 字符串问题

求助!!php json 字符串问题

WBOY
WBOYOriginal
2016-06-23 14:39:151371Durchsuche

本帖最后由 zl2727 于 2013-12-10 16:14:43 编辑

$proquery ="select * from #@__keyproduct where typeid='".$id."' order by corank asc"; 

$dsql->SetQuery($proquery); 
$dsql->Execute();
 $i=0; 
while($row = $dsql->GetArray()) { 

$arrystr.='{"id":"'.$row["id"].'","title":"'.$row["goodstitle"].'","goodsTitle":"'.$row["goodstitle"].'","price":"'.$row

["price"].'","imgUrl":"'.$row["imgurl"].'","goodsUrl":"'.$row["goodsurl"].'","brandName":"'.$row

["brandname"].'","brandUrl":"'.$row["brandurl"].'"},';

 $i++;
 }

 if($i>0){ $arrystr=substr($arrystr,0,$arrystr.lenght-1); }
如果这样写
 $a='{"status":"1","result":['.$arrystr.'],"moreUrl":"'.$moreurl.'"}'; 
AJAX返回 {"status":"1","result":[],"moreUrl":"http:\/\/"}
result 是空的

如果下面这样写就是正常
//$a='{"status":"1","result":[{"id":"1","title":"补水润肤膏 真的很好 很补水 皮肤有弹性","goodsTitle":"补水润肤膏 真的很好很补水 皮肤有弹","price":"59.9","imgUrl":"http:///sadas213/","goodsUrl":"http:///uploads/allimg/c131205/

13V23912150-114L_lit.jpg","brandName":"","brandUrl":"http:///dsadasdas/"},{"id":"2","title":"补水润肤

222","goodsTitle":"补水润肤

222","price":"59.9","imgUrl":"http:///sadas213/","goodsUrl":"http:///uploads/allimg/c131205

/13V23912150-

114L_lit.jpg","brandName":"","brandUrl":"http:///dsadasdas/"}],"moreUrl":"http://jianfei.ecoo.com.cn/shuig

uo/"}'; 

$a = iconv("gbk", "UTF-8", $a);
$a=json_decode($a, true);
echo json_encode($a);


请大神们指教一下 谢谢!

回复讨论(解决方案)

$r['a'] = 123;echo json_encode($r); //得到 {"a":123}$a[] = $r;$a[] = $r;$a[] = $r;echo json_encode($a); //得到 [{"a":123},{"a":123},{"a":123}]

你应该知道怎么写了吧?

虽然 php 的 json 函数只支持 utf-8 编码,但你可以要求数据库返回 utf-8 编码的数据

版主您好 我将代码修改成这样 可还是不行 我是学.net的 Php实在太差 麻烦您在指导一下 谢谢
$a=array();
 while($row = $dsql->GetArray()) {
 $a[]= $row; 

$a='{"status":"1","result":'.json_encode($a).',"moreUrl":"'.$moreurl.'"}'; 
$a = iconv("gbk", "UTF-8", $a);
 $a=json_decode($a, true); 
echo json_encode($a);

AJAX返回 {"status":"1","result":[],"moreUrl":"http:\/\/"}
result 是空的

1、你用的是什么数据库?不会是 Access 吧?
2、如果你无法让数据库返回 utf-8 编码的数据,可以这样

function gtou($s) { return iconv('gbk', 'utf-8', $s); }$a=array();while($row = $dsql->GetArray()) {	  $a[]= array_map('gtou', $row); }
 
3、这样构造输出数据
$res = array(  'status' => '1',  'result' => $a,  'moreUrl' => $moreurl,);echo join_encode($res);

版主您好 这样写 输出也是对的 

AJAX返回 {"status":"1","result":[],"moreUrl":"http:\/\/"}
result 是空的

我的QQ 272718467 要不您加下我的QQ指导一下 或者 关注我一下 可以吗?

这样直接返回数据库读出的数据 AJAX 就可以接到 result 
//$a='{"status":"1","result":[{"id":"1","title":"补水润肤膏 真的很好 很补水 皮肤有弹性","goodsTitle":"补水润肤膏 真的很好 
很补水 皮肤有弹
性","price":"59.9","imgUrl":"http:///sadas213/","goodsUrl":"http:///uploads/allimg/c131205/
13V23912150-114L_lit.jpg","brandName":"","brandUrl":"http:///dsadasdas/"},{"id":"2","title":"补水润肤
222","goodsTitle":"补水润肤
222","price":"59.9","imgUrl":"http:///sadas213/","goodsUrl":"http:///uploads/allimg/c131205
/13V23912150-114L_lit.jpg","brandName":"","brandUrl":"http:///dsadasdas/"}],"moreUrl":"http://shuig
uo/"}'; 

我是mysql数据库

	$JsonStr='[		{"id":"1","name":"\u5f20\u96ea\u6885","age":"27","subject":"\u8ba1\u7b97\u673a\u79d1\u5b66\u4e0e\u6280\u672f"},		{"id":"2","name":"\u5f20\u6c9b\u9716","age":"21","subject":"\u8f6f\u4ef6\u5de5\u7a0b"}	]';	//被解析的字符串只能用?引?,而不能用?引?	$Json=json_decode($JsonStr,TRUE);	echo '<pre class="brush:php;toolbar:false">',var_dump($Json),'
'; $array=array('a'=>'A','B'=>2); $a=json_encode($array); echo '

',var_dump($a),'
'; $a=serialize($array); echo '
',var_dump($a),'
'; $a=unserialize($a); echo '
',var_dump($a),'
';die();

sibang 您好 我没有找到单双引号问题 现在还是没有解决  

我是 php+ajax+json

谢谢 大神们的支持 由于小弟疏忽  

在AJAX请求时 路径写错 

其他啥问题都没有  

结贴!!!

呵呵,看来还是要仔细

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn