0

我需要能够为我正在制作的应用程序从网站检索和显示 JSON 数据。在将它实施到我的应用程序中之前,我认为我应该通过在其他地方测试它来确保我了解它是如何工作的。我制作了以下 HTML 和 JSON 代码来测试它,但是如果我运行应用程序,我会得到 Uncaught TypeError: Cannot read property '0' of undefined at file:///android_asset/www/projectName.html:11 我在做什么错误的?

HTML:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">
    </script>
<script type="text/javascript">
    $(document).ready(function(){
        $("button").click(function(){
            $.get('testData.json', function(data) {
                alert('get performed');
                var obj = eval ("(" + data + ")");
                $("p").html(obj.data_set[0].data1);
            });
        });
    });
</script>
</head>

<body>
<h2>Heading</h2>
<p>Display</p>
<button>Click me</button>
</body>
</html>

JSON文件:

[{"data_set":{"data1":"string","data2":null,"data3":22.0}}]
4

3 回答 3

0

看到这个jsFidle:http: //jsfiddle.net/7Uxtg/

我包含了一些代码来遍历整个数据结构(不仅仅是一个可能的路径)。参加你需要的部分;-)

$(document).ready(function () {
    $("button").click(function () {
        $.ajax({
            url: '/gh/gist/response.json/37ab4c69a04628428ce2',
            dataType: 'json',
            success: function (json) {
                // to display everything
                /*$.each(json, function (k, v) {
                    $.each(v.data_set, function (key, value) {
                        $('p').append(value);
                    });
                });*/

                // to display just the string
                $('p').html(json[0].data_set.data1);
            }
        });
    });
});
于 2013-08-13T07:55:01.790 回答
0

您使用eval的是不必要的。我建议您阅读JSON 是什么以及如何使用它

你不需要使用evalondata因为它已经是一个 JSON 对象。您的代码的问题是您试图data_set作为data. 然而,data它实际上是一个数组,有一个未命名的对象。该对象具有 member data_set。反过来,data_set是一个对象,而不是一个数组,所以你不能使用data_set[0]. 你想要这样的东西:

$(document).ready(function(){
    $("button").click(function(){
        $.getJSON('testData.json', function(data) {
            alert('get performed');
            $("p").html(data[0].data_set.data1);
        });
    });
});​

看看这个 jsfiddle

于 2012-07-30T19:41:39.710 回答
0

更改$.get$.getJSON或设置 $.get 中的数据类型,如下所示

更新

我也意识到你没有像这样正确地解析 json

 $.get('testData.json', function(data) {
     alert('get performed');
     $("p").html(obj[0].data_set.data1);
 },'json');
于 2012-07-30T19:18:26.993 回答