Попытка разобрать с Jquery.parseJson ... часть II - PullRequest
0 голосов
/ 28 декабря 2010

Я недавно опубликовал здесь сообщение о Jquery.parseJson.Теперь я во второй части моего достижения.Я получил этот скрипт, работающий со справкой пользователя stackoverflow.

<input type="text" id="query" /><button>search</button><br />
<div id="results">

</div>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function(){
        $('button').click(function(){
            $("#query").val(); // Do nothing with this value
            var json = eval('({"name":"John"})');
            $("#results").append('<p>' + json.name + '</p>');
            // $.getJSON('{"name":"John"}',function(json){
            //     $.each(json.results,function(i,obj){
            //         $("#results").append('<p>' + obj.name + '</p>');
            //     });
            // });
        });
    });

Теперь, когда у меня работает этот код, я создал реальный JSON для анализа, вот он:

["http:\/\/guimaraes-braga.olx.pt\/seat-leon-1-9tdi-sport-111cv-iid-148286318",
 {"1":"http:\/\/static04.olx-st.com\/images\/v4\/logos\/logo-default.png"},
     {"2":"http:\/\/images03.olx.pt\/ui\/10\/71\/18\/t_1292857323_148286318_1.jpg"},
 {"3":"http:\/\/images04.olx.pt\/ui\/10\/71\/18\/t_1292886514_148286318_2.jpg"},
        {"4":"http:\/\/images04.olx.pt\/ui\/10\/71\/18\/t_1292886514_148286318_3.jpg"},
 {"5":"http:\/\/images02.olx.pt\/ui\/10\/71\/18\/t_1292886514_148286318_4.jpg"},
 {"6":"http:\/\/images02.olx.pt\/ui\/10\/71\/18\/t_1292886514_148286318_5.jpg"},
 {"7":"http:\/\/images02.olx.pt\/ui\/10\/71\/18\/t_1292886514_148286318_6.jpg"},
 {"8":"http:\/\/images03.olx.pt\/ui\/10\/71\/18\/t_1292857323_148286318_1.jpg"},
 {"9":"http:\/\/images04.olx.pt\/ui\/10\/71\/18\/t_1292886514_148286318_2.jpg"},
 {"10":"http:\/\/images04.olx.pt\/ui\/10\/71\/18\/t_1292886514_148286318_3.jpg"},
 {"11":"http:\/\/images02.olx.pt\/ui\/10\/71\/18\/t_1292886514_148286318_4.jpg"},
 {"12":"http:\/\/images02.olx.pt\/ui\/10\/71\/18\/t_1292886514_148286318_5.jpg"},
 {"13":"http:\/\/images02.olx.pt\/ui\/10\/71\/18\/t_1292886514_148286318_6.jpg"},
 {"14":"http:\/\/images01.olx.com\/images\/spinner.gif"},
 {"15":"http:\/\/images01.olx.pt\/ui\/10\/71\/18\/1292886514_148286318_1-Fotos-de--SEAT-LEON-19TDI-SPORT-111CV.jpg"},
 {"16":""}]

ThisJSON выше содержит URL для изображений, и я попытался передать этот JSON так же, как в первом скрипте, но он не работает ... некоторые подробности в коде ниже.

<?php $json = new img_json_output(); ?>
<?php $data = $json->get_img_tags_as_json($json->get_page('http://guimaraes-braga.olx.pt/seat-leon-1-9tdi-sport-111cv-iid-148286318')); ?>

<input type="text" id="query" /><button>search</button><br />
<div id="results">

</div>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function(){
        $('button').click(function(){
            $("#query").val(); // Do nothing with this value
            var json = eval(<?php echo $data; ?>);
            $("#results").append('<p>' + json.1 + '</p>');
        });
    });
</script>

PHPпеременная $ data возвращает JSON.

Как заставить это работать?Проблема в моем формате JSON?

Ответы [ 3 ]

0 голосов
/ 28 декабря 2010
        var json = eval( "(" + '<?php echo $data; ?>' + ")" );

Попробуйте проверить:
1. строка JSON не содержит возврат каретки.
2. цепочка методов.Внешней структурой является массив.Это должен быть json [0] или json [1] ["1"].

У меня работает следующий скрипт.

 <body>
     <input type="text" id="query" /><button>search</button><br />
     <div id="results">

     </div>

     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
     <script type="text/javascript">
         $(document).ready(function(){
             $('button').click(function(){
                 var json = eval('(' + '["http:\/\/guimaraes-braga.olx.pt\/seat-leon-1-9tdi-sport-111cv-iid-148286318", {"1":"http:\/\/static04.olx-st.com\/images\/v4\/logos\/logo-default.png"}, {"2":"http:\/\/images03.olx.pt\/ui\/10\/71\/18\/t_1292857323_148286318_1.jpg"}, {"3":"http:\/\/images04.olx.pt\/ui\/10\/71\/18\/t_1292886514_148286318_2.jpg"}, {"4":"http:\/\/images04.olx.pt\/ui\/10\/71\/18\/t_1292886514_148286318_3.jpg"}, {"5":"http:\/\/images02.olx.pt\/ui\/10\/71\/18\/t_1292886514_148286318_4.jpg"}, {"6":"http:\/\/images02.olx.pt\/ui\/10\/71\/18\/t_1292886514_148286318_5.jpg"}, {"7":"http:\/\/images02.olx.pt\/ui\/10\/71\/18\/t_1292886514_148286318_6.jpg"}, {"8":"http:\/\/images03.olx.pt\/ui\/10\/71\/18\/t_1292857323_148286318_1.jpg"}, {"9":"http:\/\/images04.olx.pt\/ui\/10\/71\/18\/t_1292886514_148286318_2.jpg"}, {"10":"http:\/\/images04.olx.pt\/ui\/10\/71\/18\/t_1292886514_148286318_3.jpg"}, {"11":"http:\/\/images02.olx.pt\/ui\/10\/71\/18\/t_1292886514_148286318_4.jpg"}, {"12":"http:\/\/images02.olx.pt\/ui\/10\/71\/18\/t_1292886514_148286318_5.jpg"}, {"13":"http:\/\/images02.olx.pt\/ui\/10\/71\/18\/t_1292886514_148286318_6.jpg"}, {"14":"http:\/\/images01.olx.com\/images\/spinner.gif"}, {"15":"http:\/\/images01.olx.pt\/ui\/10\/71\/18\/1292886514_148286318_1-Fotos-de--SEAT-LEON-19TDI-SPORT-111CV.jpg"}, {"16":""}]' + ')');
                 for (var i=1; i<json.length; i++){
                     $("#results").append('<p>' + json[i][i] + '</p>');
                 }
             });
         });
     </script>
    <hr />
 </body>

0 голосов
/ 29 декабря 2010
var json = eval(<?php echo $data; ?>); // Will not work

Избавьтесь от функции eval.JSON является допустимым JavaScript в этом контексте назначения его переменной из сгенерированного сервером кода JavaScript.Тогда все должно работать нормально:

var json = <?php echo $data; ?>; // Works fine

Вам нужно исправить эту строку, хотя:

$("#results").append('<p>' + json.1 + '</p>');

Попробуйте что-то вроде json[1]["1"] вместо json.1.

0 голосов
/ 28 декабря 2010

Это на самом деле не ответ на ваш вопрос, а просто предложение.Вы опробовали библиотеку json2?Это действительно хорошо и справляется с разбором и сериализацией JSON.Вот ссылка json.org .При минимизации это 2,5 КБ, поэтому не так много дополнительных затрат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...