使用 jQuery 检索 JSON
Retrieving JSON using jQuery
我是第一次修改 JSON 数据。我在网上找到的一些示例看起来非常复杂,我无法简化它以便理解该文件。我决定制作一个使用 JSON 数据填充的博客网站。所有文件都在 HTML 文件之外。 JS 文件已正确链接。 JS文件在根目录下的js文件夹中。 index.html 和 blogs.json 在根目录中。
这是HTML:
<div class="blog_list"> <!-- Div to hold populated blogs -->
<!-- Blog Start -->
<div class="blog_post">
<div class="blog_panel">
<img class="blog_image" src="" alt="">
<div class="blog_panel_body">
<h2 class="blog_title"></h2>
<span class="blog_author_date"></span>
<p class="blog_content">
</p>
</div>
</div>
</div>
<!-- Blog End -->
</div>
这是外部 JSON 数据:
{
"blogs": [
{
"img": "<img class=\"image\" src=\"img/image.jpeg\" alt=\"Sample image 1\" />",
"title": "My Amazing Journey",
"author": "David",
"date": "June 13, 2017",
"content": "This is some content."
},
{
"img": "<img src=\"img/image.jpeg\" alt=\"Sample image 2\" />",
"title": "My Beautiful Journey",
"author": "David",
"date": "June 14, 2017",
"content": "This is some content."
},
{
"img": "<img src=\"img/image.jpeg\" alt=\"Sample image 3\" />",
"title": "My Wonderful Journey",
"author": "David",
"date": "June 15, 2017",
"content": "This is some content."
}]
}
这是我的外部 JS 文件:
$("document").ready(function () {
$.getJSON("./blogs.json"), function(json) {
json.blogs.forEach(function(blog) {
var newBlog = $('body').find(".blog_post").clone();
$(newBlog).find(".blog_image").html(blog.img);
$(newBlog).find(".blog_title").append(blog.title);
$(newBlog).find(".blog_author_date").append("Written by: " + blog.author + " on " + blog.date);
$(newBlog).find(".blog_content").append(blog.content);
});
};
});
控制台显示错误:
XML Parsing Error: not well-formed Location: file:///Users/David/Site/Website%20Template/blogs.json Line Number 1, Column 1: blogs.json:1:1
我走在正确的轨道上吗?任何意见和建议将不胜感激。
这并不能解决您确切的 jquery 问题(使用克隆),但这是实现我认为您想要做的事情的另一种方法..
test.html(在根文件夹中)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name=viewport content="width=device-width, initial-scale=1">
<title>json/js test stack question</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="js/test.js"></script>
</head>
<body>
<div class="blog_list">
</div>
</body>
</html>
test.json(在根文件夹中)
{"blogs": [
{
"img": "blog1.jpg",
"title": "My Amazing Journey",
"author": "David",
"date": "June 13, 2017",
"content": "This is some content."
},
{
"img": "blog2.jpg",
"title": "My Beautiful Journey",
"author": "David",
"date": "June 14, 2017",
"content": "This is some content."
},
{
"img": "blog3.jpg",
"title": "My Wonderful Journey",
"author": "David",
"date": "June 15, 2017",
"content": "This is some content."
}
]}
test.js(在根文件夹中的js文件夹中)
$(function() {
$.getJSON("./test.json", function(json) {
var opener = '<!-- Blog Start --><div class="blog_post"><div class="blog_panel">';
var closer = '</div></div><!-- Blog End -->';
$(json.blogs).each(function() {
var body = '' +
'<img class="blog_image" src="folder/' + this.img + '" alt="' + this.title + '">' +
'<div class="blog_panel_body">' +
'<h2 class="blog_title">' + this.title + '</h2>' +
'<span class="blog_author_date">' + this.author + ':' + this.date + '</span>' +
'<p class="blog_content">' + this.content + '</p>' +
'</div>'
;
$('.blog_list').append(opener + body + closer);
})
});
})
我是第一次修改 JSON 数据。我在网上找到的一些示例看起来非常复杂,我无法简化它以便理解该文件。我决定制作一个使用 JSON 数据填充的博客网站。所有文件都在 HTML 文件之外。 JS 文件已正确链接。 JS文件在根目录下的js文件夹中。 index.html 和 blogs.json 在根目录中。
这是HTML:
<div class="blog_list"> <!-- Div to hold populated blogs -->
<!-- Blog Start -->
<div class="blog_post">
<div class="blog_panel">
<img class="blog_image" src="" alt="">
<div class="blog_panel_body">
<h2 class="blog_title"></h2>
<span class="blog_author_date"></span>
<p class="blog_content">
</p>
</div>
</div>
</div>
<!-- Blog End -->
</div>
这是外部 JSON 数据:
{
"blogs": [
{
"img": "<img class=\"image\" src=\"img/image.jpeg\" alt=\"Sample image 1\" />",
"title": "My Amazing Journey",
"author": "David",
"date": "June 13, 2017",
"content": "This is some content."
},
{
"img": "<img src=\"img/image.jpeg\" alt=\"Sample image 2\" />",
"title": "My Beautiful Journey",
"author": "David",
"date": "June 14, 2017",
"content": "This is some content."
},
{
"img": "<img src=\"img/image.jpeg\" alt=\"Sample image 3\" />",
"title": "My Wonderful Journey",
"author": "David",
"date": "June 15, 2017",
"content": "This is some content."
}]
}
这是我的外部 JS 文件:
$("document").ready(function () {
$.getJSON("./blogs.json"), function(json) {
json.blogs.forEach(function(blog) {
var newBlog = $('body').find(".blog_post").clone();
$(newBlog).find(".blog_image").html(blog.img);
$(newBlog).find(".blog_title").append(blog.title);
$(newBlog).find(".blog_author_date").append("Written by: " + blog.author + " on " + blog.date);
$(newBlog).find(".blog_content").append(blog.content);
});
};
});
控制台显示错误:
XML Parsing Error: not well-formed Location: file:///Users/David/Site/Website%20Template/blogs.json Line Number 1, Column 1: blogs.json:1:1
我走在正确的轨道上吗?任何意见和建议将不胜感激。
这并不能解决您确切的 jquery 问题(使用克隆),但这是实现我认为您想要做的事情的另一种方法..
test.html(在根文件夹中)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name=viewport content="width=device-width, initial-scale=1">
<title>json/js test stack question</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="js/test.js"></script>
</head>
<body>
<div class="blog_list">
</div>
</body>
</html>
test.json(在根文件夹中)
{"blogs": [
{
"img": "blog1.jpg",
"title": "My Amazing Journey",
"author": "David",
"date": "June 13, 2017",
"content": "This is some content."
},
{
"img": "blog2.jpg",
"title": "My Beautiful Journey",
"author": "David",
"date": "June 14, 2017",
"content": "This is some content."
},
{
"img": "blog3.jpg",
"title": "My Wonderful Journey",
"author": "David",
"date": "June 15, 2017",
"content": "This is some content."
}
]}
test.js(在根文件夹中的js文件夹中)
$(function() {
$.getJSON("./test.json", function(json) {
var opener = '<!-- Blog Start --><div class="blog_post"><div class="blog_panel">';
var closer = '</div></div><!-- Blog End -->';
$(json.blogs).each(function() {
var body = '' +
'<img class="blog_image" src="folder/' + this.img + '" alt="' + this.title + '">' +
'<div class="blog_panel_body">' +
'<h2 class="blog_title">' + this.title + '</h2>' +
'<span class="blog_author_date">' + this.author + ':' + this.date + '</span>' +
'<p class="blog_content">' + this.content + '</p>' +
'</div>'
;
$('.blog_list').append(opener + body + closer);
})
});
})