2011-02-27 34 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()