我的目标是使用ActionScript3视频播放器创建个人应用程序。我希望能够在我的浏览器中保存单个.swf文件并通过AJAX将.swf的url传递给我的视频。我选择使用JSON作为我的数据。
我是JSON的新手而且我已经碰壁了。这看起来很简单,但起初我甚至无法将我本地托管的.json文件放到我的webapp中。当我尝试使用XML时,它正在工作。经过一系列的麻烦拍摄后,它现在实际上是我的XMLHttpRequest。
我试图尽可能地保持向后兼容性,因此我使用json2.js库来保护这个概念。
我当前的问题是无法解析我的XMLHTTPRequest。说实话,我甚至不确定我所做的事情是否正确,因为我在寻找示例,他们几乎都指向将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偶尔会将其置于兼容模式,但并非总是&lt;。&lt;。)我现在无法在Safari或Opera上测试。
我有什么方法可以在这些浏览器中使用它吗?我在JQuery库中尝试过$ .parseJSON,但我也遇到了问题。如果有人能用它解释解决方案,我对JQuery感兴趣。