2011-05-19 104 views
1

有没有解决方案来防止json_encode添加转义字符?我从ajax请求返回一个json obj。防止json_encode添加转义字符

这是我目前有:

foreach ($files as $file) 
{ 
    $inf = getimagesize($file); 

    $farr[] = array (
        "imgurl" => "/".str_replace("\\" , "/" , str_replace(DOCROOT , "" , $file)) , 
        "width"  => $inf[0] , 
        "height" => $inf[1] 
        ); 
} 
$t = json_encode($farr); 

它提供:

[ 
{\"imgurl\":\"\\\/_assets\\\/portfolio\\\/96\\\/full.png\",\"width\":580,\"height\":384}, 
{\"imgurl\":\"\\\/_assets\\\/portfolio\\\/95\\\/full.png\",\"width\":580,\"height\":452}, 
{\"imgurl\":\"\\\/_assets\\\/portfolio\\\/94\\\/full.png\",\"width\":580,\"height\":384} 
] 

,但我需要:具有援引导致了该imgUrl的宽度和高度指标

[ 
{imgurl:"/_assets/portfolio/96/full.png",width:580,height:384}, 
{imgurl:"/_assets/portfolio/95/full.png",width:580,height:452}, 
{imgurl:"/_assets/portfolio/94/full.png",width:580,height:384} 
] 

休息我的JavaScript打破

运气不好,所以任何提示非常欢迎...

+3

'json_encode()'做的是正确的事情。这意味着你一定在做错事。请显示打破的代码。 – Tomalak 2011-05-19 15:23:53

+0

你为什么要这样? – 2011-05-19 15:24:36

+0

你想要的输出是一个Javascript表达式,而不是JSON序列化。然而,在你的输出中有太多的addslashes,json_encode不会这样做。 – mario 2011-05-19 15:31:09

回答

3

使用你在你的问题,并var_dumping它有代码,我得到如下:string(40) "[{"imgurl":"\/bla"},{"imgurl":"\/blub"}]"

只有当我加倍json_encode像$t = json_encode(json_encode($farr));我得到与你一样的结果 - 所以必须有第二个json_encode ...

+1

D'oh - 在返回的方法中编码导致ajaxs脚本inturn json_encodes结果....如果一个橡皮鸭调试一个 - srry窥视...; P – 2011-05-19 15:39:39

+0

必不可少的部分“只有当我加倍json_encode” – ceph3us 2017-08-05 05:12:40