我正在尝试使用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 :(得分: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
}