0

嘿伙计们,我正在尝试解析以下 json 文件: http: //osthessen-news.de/json2.php

为了实现这一点,我使用以下 javascript:

更新:

<body>
<div id="placeholder"></div>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script>



        var url = 'http://osthessen-news.de/json2.php';

        alert("ASDFFD");

        $(document).ready(function(){
                          var url = "http://osthessen-news.de/json2.php";
                          $.getJSON(url, function(data) {
                                    var output="<ul>";
                                    for (var i in data.news) {
                                    output+="<li>" + data.news[i].id + " " + data.news[i].Ueberschrift +"</li>";
                                    }

                                    output+="</ul>";
                                    document.getElementById("placeholder").innerHTML=output;
                                    });
                          });          

    </script>
</body>

在本网站上找到:http: //iviewsource.com/codingtutorials/getting-started-with-javascript-object-notation-json-for-absolute-beginners/

我是 javascript 中 json 的新手。我也尝试了不同的方法。那么有人能告诉我我做错了什么吗?提前谢谢:)

4

4 回答 4

1

使用常规 for 循环而不是 for..in 语法。 For..in主要用于迭代对象的属性,而正则 for 语法更适合数组。由于 news 是一个数组,因此正则语法是最合适的。

for (var i = 0; i < data.news.length; i++) {
    output+="<li>" + data.news[i].id + " " + data.news[i].ueberschrift +"</li>";
}

另外,尝试将所有这些包装在document.ready

$(document).ready(function(){
   var url = "http://osthessen-news.de/json2.php"; 
 $.getJSON(url, function(data) {
    var output="<ul>";
    for (var i in data.news) {
        output+="<li>" + data.news[i].id + " " + data.news[i].ueberschrift +"</li>";
    }

    output+="</ul>";
    document.getElementById("placeholder").innerHTML=output;
});

});

于 2013-04-16T08:47:17.870 回答
0

使用常规的 each 循环而不是 for..in 语法。

jQuery.each(data.news, function(j, val) {
    output+="<li>" + val.id + " " + val.ueberschrift +"</li>";
}
于 2013-04-16T08:50:34.783 回答
0

我试过了,对象没有.ueberschrift,它有.Ueberschrift哪个很重要(大小写敏感性)。


另外,这是 jquery,所以(警告:这是我的风格挑剔):

for (var i in data.news)

应该

$(data.news).each( ...

document.getElementById("placeholder").innerHTML=output;

应该

$('#placeholder').html(output);

于 2013-04-16T09:00:56.130 回答
0

我在 Chrome 上遇到错误(XMLHttpRequest 无法加载http://osthessen-news.de/json2.php。Access-Control-Allow-Origin不允许 Origin null。)

您不能通过 AJAX 从不同的域加载文件。

http://en.wikipedia.org/wiki/Same_origin_policy

于 2013-04-16T08:54:40.230 回答