Может ли кто-нибудь помочь мне понять проблему AJAX (JSON)? - PullRequest
0 голосов
/ 28 апреля 2011

Моя цель - создать личное приложение из моего видеоплеера ActionScript3. Я хочу иметь возможность сохранить один файл .swf в своем браузере и через AJAX передать URL-адрес .swf своим видео. Я решил использовать JSON в качестве моих данных.

Я новичок в JSON и врезался в стену. Это кажется совершенно простым, но сначала я даже не смог даже вставить свой локально размещенный файл .json в мое веб-приложение. Это работало, когда я пытался сделать это с XML. После множества попыток устранения неполадок он фактически получает мой XMLHttpRequest.

Я стараюсь поддерживать обратную совместимость в максимально возможной степени, и поэтому я использую библиотеку json2.js для защиты этого понятия.

Моя текущая проблема - не удается разобрать мой запрос XMLHTTP. Честно говоря, я даже не уверен, что то, что я делаю, правильно, поскольку везде я ищу примеры, они почти все указывают на решение, которое записывает JSON в реальную веб-страницу.

Мой внешний файл JSON: test.json.

{ "video":"test.f4v", "thumb":"test.jpg", "title":"The test", "caption":"TEST TEST TEST TEST TEST", "minutes":01, "seconds":43 }

Я уверен, что файл JSON действителен.

Вот мой html / javascript:

<script type="text/javascript" src="js/json2.js"></script>
    <script type="text/javascript">
    window.onload = initAll();

    function initAll(){
        var jsonData = {};
        var xhr = false;

        if(window.XMLHttpRequest){ //Chrome, Firefox, Opera, Safari, IE7+
            xhr = new XMLHttpRequest();
        } else if(window.ActiveXObject){ //IE5 + IE6
            try{
                xhr = new ActiveXObject("Msxml2.XMLHTTP");
            } catch(e){
                try{
                    xhr = new ActiveXObject("Microsoft.XMLHTTP");
                } catch(e) {
                    alert("Could not make XMLHttpRequest");
                }
            }
        }

        if(xhr){
            xhr.open("GET", "js/ajax/test.json", true);
            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4 && xhr.status == 200){
                    try{
                        jsonData = JSON.parse(xhr.responseText);
                        alert(jsonData.title);
                        document.getElementById("vidtitle").innerHTML = xhr.responseText.title;
                        document.getElementById("vidcaption").innerHTML = jsonData.caption;
                    } catch(e){
                        alert("Unable to parse jsonData.");
                    }
                }
            };
            xhr.send(null);
        }
    }
</script>   
</head>
<body><div class="vidcontent">
<h2 id="vidtitle"></h2>
<p id="vidcaption"></p>

Я делаю это локально на моем сервере, но я загрузил файлы на мой веб-хост и все еще получаю те же проблемы.

Firebug говорит мне, что у него есть данные, и я даже могу прочитать их через консоль. Теперь код работает в Firefox, но не в Chrome или IE8 (IE8 иногда работает, когда я перехожу в режим совместимости, но не всегда <. <). Я не могу сейчас тестировать в Safari или Opera. </p>

Есть ли способ заставить это работать в этих браузерах? Я попытался $ .parseJSON в библиотеке JQuery, но у меня тоже были проблемы с этим. Я также заинтересован в JQuery, если кто-нибудь может объяснить решение с его помощью.

1 Ответ

0 голосов
/ 28 апреля 2011

Ваш JSON недействителен: http://www.jsonlint.com/

Начальные 0 не допускаются в цифрах.

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