我有一个JSON文件,如下所示:
[
{
"title":"Article Title 1",
"url":"https://mywebsite.com/articles/article1.html",
"type":"codes"
},
{
"title":"Article Title 2",
"url":"https://mywebsite.com/articles/article2.html",
"type":"games"
},
{
"title":"Article Title 3",
"url":"https://mywebsite.com/articles/article3.html",
"type":"codes"
}
]
我正在阅读此文件,然后为文件中的每个项目填充html页面(因此,有3个标题,意味着页面上有3个容器)。
以前没有任何错误,但是现在控制台出现错误:*SyntaxError: JSON.parse: expected ',' or ']' after array element at line 12 column 2 of the JSON data*
但是,如果只有2篇文章,那么一切都可以!添加第三个数据集后,出现错误。文件格式似乎正确,在正确的位置有“,”,我将其转换为不同的编码,但存在相同的错误。
主要请求:
我正在像这样加载文档时请求JSON文件:
$(document).ready(function(){
var reqdata = new XMLHttpRequest();
reqdata.open('GET', "https://website.com/dat/data.json");
reqdata.onload = function() {
if (reqdata.status >= 200 && reqdata.status < 400) {
try{
var postData = JSON.parse(reqdata.responseText);
render_posts(postData); // this creates dynamic content in html
//console.log(postData);
} catch (err) {
alert(" JSON Parse Error :'( ")
}
} else { alert("JSON Requestion Server Error!") }
}; reqdata.onerror = function() { alert("JSON Request Connection Error!") };
reqdata.send();
});
填充HTML :
如果JSON.parse有效,则从上面的代码中调用。这部分工作正常,仅供参考。
function render_posts(data) {
var htmldata = ""; var cardId = "";
for (var x = 0; x < data.length; x++) {
cardId = "card-type-" + data[x].type;
htmldata += "<div class='card' id='" + cardId + "' onclick='card_clicker(\"" + data[x].url + "\")'><div class='header'>" + data[x].title + "</div><div class='decor'></div></div>";
}
cardWrapper.insertAdjacentHTML('beforeend', htmldata);
}
帮助:感谢您提供任何帮助。无法弄清真正的问题是什么。 JSON文件看起来不错。我尝试过在线格式化,但结果相同。我是AJAX的新手。在stackoverflow上尝试了其他解决方案,但仍然相同。
答案 0 :(得分:0)
在某处可能很难注意到多余的字符 要么 使用非标准双引号 要么 其他字符不是您想的那样(逗号?)
答案 1 :(得分:0)
这是JSON解码的一个小的url解码问题。而不是像这样添加网址:
"url":"https://mywebsite.com/articles/article2.html"
必须使用转义符反斜杠,如下所示:
"url":"https:\/\/mywebsite.com\/articles\/article2.html"
现在一切正常!