我在这个Javascript JSON解析时出错了

时间:2013-02-21 00:43:55

标签: javascript jquery json parsing

我正在尝试使用javascript解析JSON文件并仅显示数组中的图像。我在这里做错了什么,我将如何解决它? 执行代码时屏幕上没有输出。我认为这会输出图像,但没有任何事情发生。

HTML:

<!DOCTYPE html>
<html>

<script 'type=text/javascript' 'src=js.js'></script>
<script  type="text/javascript" src="ajax link was here"></script>
  <head lang="en">
    <meta charset="utf-8">
    <title>images</title>
  </head>

  <body>

    <div class = "movie">

    </div>


  </body>

</html>

Javascript文件

$(document).ready(function () {

    $.get('http://54.243.128.130/search/movies_list/?q=inception', function (data, image) {

        var movie = JSON.parse(data);

        for (var x = 0; x < movie.length; x++) {
            var mov = movie[x];
            //var elm = '<div class = "movie"><img src = "'+mov.img+'"></div>';
            var elm = mov.img;
            $('.movie').prepend(elm);

        }

    }, 'text');

});

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

不需要自己解析jsut而是使用$.getJSON

$.getJSON('http://54.243.128.130/search/movies_list/?q=inception', function (data, image) {

    for (var x = 0; x < data.length; x++) {
        var mov = data[x];
        //var elm = '<div class = "movie"><img src = "'+mov.img+'"></div>';
        var elm = mov.img;
        $('.movie').prepend(elm);

    }

}

另外你的结构错了。该页面返回的内容如下:

{
   "query": "the value of your q parameter"
   "results": []
}

因此,您还需要修改循环和数据访问。所以把它放在一起:

$.getJSON('http://54.243.128.130/search/movies_list/?q=inception', function (data, image) {

        var movies = data.results;

        for (var x = 0; x < movies.length; x++) {
            var mov = movies[x];
            //var elm = '<div class = "movie"><img src = "'+mov.img+'"></div>';
            var elm = mov.img;
            $('.movie').prepend(elm);

        }

    }

最后,如果这与您的代码在同一台服务器上,则需要使用jsonp或创建本地代理来发出外部请求。

答案 1 :(得分:1)

对于初学者,您可能想要更改

<script 'type=text/javascript' 'src=js.js'></script>

<script type="text/javascript" src="js.js"></script>

您能描述一下您遇到的错误/问题吗?

答案 2 :(得分:-2)

JSON.parse函数返回字典而不是数组。所以我们假设我们有一个字典作为JSON.parse的输出:
var movie = {a:1,b:2,c:3};
然后你应该像那样迭代它:

for(var i=0;i<Object.keys(movie).length;i++){
    var mov = movie[Object.keys(movie)[i]];
    var elm = mov.img;
    $('.movie').prepend(elm
}