Моя цель - создать личное приложение из моего видеоплеера 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, если кто-нибудь может объяснить решение с его помощью.