2013-02-21 41 views
-5

我想解析一个使用JavaScript的JSON文件,并只显示数组中的图像。我在这里做错了什么,我将如何去修复它? 代码执行时屏幕上没有输出。我认为这会输出图像,但没有任何事情发生。我在哪里出错这个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'); 

}); 

预先感谢您的任何帮助。

+0

什么似乎是问题? – 2013-02-21 00:45:57

+5

我不知道,哪里有你错了?你遇到了什么错误?你期望的结果是什么?什么是*实际*结果?他们有什么不同?给我们*东西*在这里工作。 – meagar 2013-02-21 00:46:33

+0

很有可能,如果你的服务器返回一个JSON头部,那么数据变量已经被转换为数组了 – Pete 2013-02-21 00:47:58

回答

1

不需要解析自己,只需使用$.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); 

    } 

} 

此外,你ahve结构错误。该页面返回如下内容:

{ 
    "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或创建一个本地代理,使外部请求上。

+0

它不输出任何东西。加载时页面上没有显示 – MrGuy 2013-02-21 00:47:07

1

对于初学者来说,你可能想改变

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

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

而且你能描述你有什么样的错误/问题?

-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 
} 
+0

它们在JS中被称为_objects_,而不是字典。 – Barmar 2013-02-21 00:52:47

+0

另外,如果字符串类似于'“[1,2,3]”',那么'JSON.parse'确实会返回一个数组。 – Phil 2013-02-21 00:53:43

+0

抱歉。2大错误,谢谢你们:) – haitaka 2013-02-21 00:55:45