YUI3 разбор JSON и IE9 - PullRequest
       2

YUI3 разбор JSON и IE9

0 голосов
/ 29 января 2012

Я пытаюсь протестировать несколько примеров синтаксического анализа ajax и JSON, используя YUI3 на localhost. Код выглядит следующим образом:

<!doctype html>
<html>
<head>
    <title>YUI 3 Getting started</title>
</head>
<body>
    <p id="time">(what time is it?)</p>

    <button id="go">What time is it?</button>

    <script src="http://yui.yahooapis.com/3.3.0/build/simpleyui/simpleyui-min.js"></script>
    <script>

    function printTime(id, response) {
        try {
            var data = Y.JSON.parse(response.responseText);
        }
        catch (ex) {
            data = { time: "ERROR" };
        }

        Y.one("#time").setContent(data.time);
    }

    Y.one("#go").on("click", function () {
        Y.io("watch.php", {
            on: {
                success: printTime
            }
        });
    });

    </script>

</body>
</html>

Это watch.php:

<?php
header('Content-Type: application/json; charset=utf8');
echo(
    json_encode(
        array(
            "time" => date("g:ia l, M jS")
        )
    )
);

Я попытался загрузить файлы на веб-хостинг, но проблема все еще возникает. Странно то, что он прекрасно работает в Firefox, но отказывается работать в IE9 и других режимах IE! IE возвращает этот код ошибки: c00ce56e.

Есть идеи?

1 Ответ

4 голосов
/ 29 января 2012

Оказывается, IE9 очень и очень строг с ответами JSON. Чтобы быть уверенным, убедитесь, что правильный заголовок с кодировкой отправляется для каждого ответа JSON. Также убедитесь, что JSON правильно сформирован.

Это исправление:

header('Content-Type: application/json; charset=utf-8');

Обратите внимание, что кодировка ДОЛЖНА быть определена и должна быть действительной кодировкой.

...