2011-02-27 7 views
0

내 데이터베이스에서 이미지 경로 목록을 가져오고 Jquery와 Json의 도움을 받아 내 사이트에 추가하려고합니다. 그러나 나는 그것에게 경로를 변경하고 새로운 <img src ="user/photogallery/images/members/2/2_2.jpg " /> 구성 요소를 만들 수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 부분처럼 저를 보여줍니다 PHP에 t know why after encoding my string using json_encode`을 돈. 당신은 백 슬래시가 경로에 슬래시 이전에 추가되는 것을 방해하는 것처럼

여기 내 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

jQuery 질문보다 PHP 질문이 훨씬 많습니다. PHP 태그를 추가 했으므로 jQuery 태그를 제거하는 것이 좋습니다. –

+0

잘 서버 쪽 양식을 받고 있습니까? 콘솔에서 응답을 확인하십시오 –

+0

가능한 복제본 : [JSON : 슬래시가 이스케이프되는 이유는 무엇입니까?] (http://stackoverflow.com/questions/1580647/json-why-are-forward-slashes-escaped) –

답변

0

소리가 난다. 이 매우 이상하다. (JSON 문자열에서 슬래시를 "이스케이프 (escape)"할 필요가 전혀 없다.)하지만 대부분의 표기법에서는 이스케이프가 필요없는 문자를 이스케이프 처리하는 데 무해하다. 이스케이프 처리 된 특수 문자가없는 경우 의미. (즉, /을 필요로하지 않지만 회피하는 것은 무해하지만, \n 의미가 있기 때문에 을 의미하지는 않지만 분명히 무해하지는 않습니다.) 내 눈에

(크록 포드는 JSON의 발명자 인.)

0

그것은 가능 ... JSON page이 잘못 이스케이프와 함께 무엇을해야하는지에 침묵하고 있지만, Crockford's own parser 그들을 (불필요한 백 슬래시를 무시) 할 수 있습니다, 그래서 이스케이프 된 백 슬래시는 DB에 저장되므로 JSON 문자열은 축약됩니다. 그들을 제거하려면 return 또는 json_encode() 전에 DB에서 반환 된 문자열을 처리해야합니다.

관련 문제