Jquery: JSON изменяет строку пути - PullRequest
0 голосов
/ 27 февраля 2011

Я пытаюсь получить список путей к изображениям из моей базы данных и с помощью Jquery и Json пытаюсь добавить их на мой сайт. Но я не надеваю t know why after encoding my string using json_encode` в php, он меняет путь и показывает мне как

[{"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');

Ответы [ 2 ]

0 голосов
/ 27 февраля 2011

Возможно, что экранированные обратные слэши хранятся в БД таким образом, поэтому ваша строка JSON просто вытягивает их дословно.Если вы хотите удалить их, вам нужно обработать строку, возвращенную из БД, прежде чем return или json_encode() их.

0 голосов
/ 27 февраля 2011

Похоже, вы обеспокоены тем, что обратные косые черты добавляются до косых черт в пути.Полностью согласен, что это очень странно (нет необходимости вообще "экранировать" косую черту в строках JSON), но в большинстве нотаций избегать экранирования символа, который не требует экранирования, если этого символа нетимеют особое экранированное значение.(То есть убежать / безвредно, даже если это не нужно, но, очевидно, не безопасно убежать n, даже если это не значит, поскольку \n что-то значит).

На мой взгляд, на странице JSON ничего не говорится о том, что делать с недопустимыми побегами, но собственный анализатор Крокфорда позволяет им (игнорирует ненужный обратный слеш), так что ... (Крокфордбудучи изобретателем JSON.)

...