有人可以帮我理解AJAX(JSON)问题吗?

时间:2011-04-27 22:52:55

标签: javascript ajax json jquery

我的目标是使用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感兴趣。

1 个答案:

答案 0 :(得分:0)

您的JSON无效:http://www.jsonlint.com/

显然,数字中不允许领先0。