Не получается спарсить JSON, jquery + php

276
19 декабря 2016, 19:39

Вместо тысячи слов:

<style> 
    .stats{
        display: inline-block;
    }
</style>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <div id="id" class="stats"></div> <div id="status" class="stats"></div>
    <!-- [{"status_id":"1","status":"1","status_text":"Working","percentage":"100","additional_info":"","last_log_time":"2016-01-24 12:47:52"}] -->
    <script>
    function show_status()
    {
        $.ajax({
        url: "get_status.php",
        method: "POST",
        data: { show_status: "true" },
        cache: false,
        success: function(html){
            //$("#status").html("status is:" + html);
            alert(html);
            var obj = jQuery.parseJSON(html);
            alert(obj.status_text);
            $("#status").html(obj.status_text);
            $("#id").html(obj.id);
        }
        });
    }
    $(document).ready(function(){
        show_status();  
        setInterval('show_status()', 5000);  
    });
    </script>

Первый алерт нормально выводит json-строку, но после парсинга второй алерт выводи undefined. Почему так происходит и как правильно это сделать? Спасибо.

Answer 1
[{"status_id":"1","status_text":"Working"}]

Обратите внимание на внешние квадратные скобки, они означают, что у вас массив, содержащий один объект. Соответственно обращение должно идти как:

alert(obj[0].status_text);

Или, если вы уверены, что элемент всегда один, делайте так:

var obj = jQuery.parseJSON(html)[0];
alert(obj.status_text);
READ ALSO
не получается убрать альфа канал

не получается убрать альфа канал

Есть на сервере изображение с прозрачным фоном, надо сделать так, чтобы фон стал белым, пытаюсь так:

261
Защита админ панели

Защита админ панели

Пишу проект с админ панелью на Laravel 52

262