2011-02-27 89 views
0

我想从我的数据库获取图像路径的列表,并在Jquery和Json triying的帮助下添加到我的网站。但我不t know why after encoding my string using json_encode`在PHP它改变它的路径,并显示我像Jquery:JSON更改路径的字符串

[{"0":"user\/photogallery\/images\/members\/2\/2_1.jpg","src":"user\/photogallery\/images\/members\/2\/2_1.jpg"},{"0":"user\/photogallery\/images\/members\/2\/2_2.jpg","src":"user\/photogallery\/images\/members\/2\/2_2.jpg"}] 

我只需要user/photogallery/images/members/2/2_2.jpg部分来创建新的<img src ="user/photogallery/images/members/2/2_2.jpg " />组件。

这里我的PHP代码和脚本

$member_id = $GET['member_id']; 
$files  = find_all_photos($member_id); 

$encoded = json_encode($files); 
echo $encoded; 
unset($encoded); 

function find_all_photos($id) 
    { 
     db_connect(); 

    $query = sprintf("SELECT src FROM photo_album_list WHERE user_id = '%s'", 
          mysql_real_escape_string($id)); 

     $result = mysql_query($query); 

     $result = db_result_to_array($result); 

     return $result; 
    } 


    function db_result_to_array($result) 
    { 
     $res_array = array(); 

    for ($count=0; $row = mysql_fetch_array($result); $count++) 
    { 
     $res_array[$count] = $row; 
    } 

     return $res_array; 

    } 

和文字

$.get('photostack.php', {member_id:2} , function(data) { 
         console.log(data); 
         var items_count = data.length; 
         for(var i = 0; i < items_count; ++i){ 
          var item_source = data[i]; 
          var cnt   = 0; 
          $('<img />').load(function(){ 
           var $image = $(this); 
           ++cnt; 
           resizeCenterImage($image); 
           $ps_container.append($image); 
           var r  = Math.floor(Math.random()*41)-20; 
           if(cnt < items_count){ 
            $image.css({ 
             '-moz-transform' :'rotate('+r+'deg)', 
             '-webkit-transform' :'rotate('+r+'deg)', 
             'transform'   :'rotate('+r+'deg)' 
            }); 
           } 
           if(cnt == items_count){ 
            $loading.remove(); 
            $ps_container.show(); 
            $ps_close.show(); 
            $ps_overlay.show(); 
           } 
          }).attr('src',item_source); 
         } 
        },'json'); 
+0

更多的PHP问题比jQuery的问题。我已经添加了PHP标签,并且您可能会考虑删除jQuery。 – 2011-02-27 10:28:18

+0

你是否从服务器端获得它?检查你的控制台上的响应 – 2011-02-27 10:28:31

+0

可能的重复[JSON:为什么是正斜杠?](http://stackoverflow.com/questions/1580647/json-why-are-forward-slashes-escaped) – 2011-02-27 10:31:53

回答

0

这听起来像你烦恼的是反斜杠被之前的路径斜杠增加。完全同意这是很奇怪(不需要任何“逃避”JSON字符串中的斜线),但是在大多数符号中,如果该角色没有特殊逃脱,逃脱不需要逃跑的角色是无害的含义。 (也就是说,虽然它不需要它,但逃脱/是无害的,但显然不是无害的,即使它并不意味着n,因为\n意味着某种东西)。

在我眼里,JSON page是做什么用的无效转义做沉默,但Crockford's own parser允许他们(忽略不必要的反斜线),所以......(克罗克福德是JSON的发明者。)

0

这是可能的逃脱的反斜杠以这种方式存储在数据库中,所以你的JSON字符串只是逐字地提取它们。如果你想删除它们,你需要先处理从DB返回的字符串,然后再使用returnjson_encode()