JSON 没有被 $.getJSON 抢到
JSON Not grabbed by $.getJSON
最终解决方案: 我的 .json
文件格式有问题,比我在问题中包含的片段更深。现在一切正常。非常感谢评论中的每个人,我将@TWLATL 的回答标记为正确,因为它是一个格式良好的函数解决方案,我可以在以后的项目中使用。
我正在尝试从 script.js
(都在 root
目录中)访问我的 data.json
文件,但它似乎根本不是 运行 .在我进行错误处理之前,我没有得到函数 运行 的指示。感谢评论,我用 .fail
替换了 .error
,但我仍然不明白为什么它失败了。
index.html
<body>
<h1>JSON Render</h1>
<div id="fileViewer"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="script.js"></script>
</body>
script.js
$.getJSON('data.json', function(data) {
console.log('json grabbed')
console.log(data);
})
.fail(function(data) {
console.log("GetJSON Error!");
console.log(data);
});
$.ajax({
url: 'data.json',
dataType: 'json',
success: function( data ) {
console.log( "SUCCESS: " );
console.log( data );
},
error: function( data ) {
console.log( "AJAX ERROR: " );
console.log( data );
}
});
data.json(样本)
{
"children": [
{
"name": "Main Folder",
"type": "folder"
},
{
"name": "Private folder",
"type": "folder"
}
]
}
我一直在 Stack Overflow 上四处寻找,但我发现没有任何解决方案似乎可以解决我的问题。求助!
编辑:将 jQuery CDN 添加到我的 index.html
。它在那里。我只是忘了把它放在问题中。
编辑 2:更新了 script.js 以反映返回以下屏幕截图的代码。 (屏幕截图在对象中间被截断了。如果对象的上下文实际上是相关的,我可以包括更多内容。)
编辑 3:新 AJAX 错误处理:
新的 ajax 函数:
$.ajax({
url: 'data.json',
dataType: 'json',
success: function( data ) {
console.log( "SUCCESS: " );
console.log( data );
},
error: function(data, textStatus, errorThrown) {
console.log("textStatus: ",textStatus);
console.log("errorThrown: ",errorThrown);
}
});
我现在非常棒地得到这个控制台输出:
使用稍微修改过的代码版本,我让它返回 JSON 就好了:
http://plnkr.co/edit/DMLyJa1Quj7ofszn5Y7o?p=info
$(document).ready(function() {
console.log("ready!");
var items;
$.getJSON('data.json', function(data) {
console.log('json grabbed');
})
.done(function(data) {
items = data.children;
console.log(items);
})
.fail(function(data) {
console.log("Error!");
});
}); // close document.ready
Jquery 现在使用 .done 作为成功方法。在该块中,只需将您的 data.children 项目分配给一个变量,您就可以开始了。
感谢评论中的每个人,我才得以解决问题。这实际上是 JSON 格式问题。我使用这个网站来查找问题所在:https://jsonformatter.curiousconcept.com/
最终解决方案: 我的 .json
文件格式有问题,比我在问题中包含的片段更深。现在一切正常。非常感谢评论中的每个人,我将@TWLATL 的回答标记为正确,因为它是一个格式良好的函数解决方案,我可以在以后的项目中使用。
我正在尝试从 script.js
(都在 root
目录中)访问我的 data.json
文件,但它似乎根本不是 运行 .在我进行错误处理之前,我没有得到函数 运行 的指示。感谢评论,我用 .fail
替换了 .error
,但我仍然不明白为什么它失败了。
index.html
<body>
<h1>JSON Render</h1>
<div id="fileViewer"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="script.js"></script>
</body>
script.js
$.getJSON('data.json', function(data) {
console.log('json grabbed')
console.log(data);
})
.fail(function(data) {
console.log("GetJSON Error!");
console.log(data);
});
$.ajax({
url: 'data.json',
dataType: 'json',
success: function( data ) {
console.log( "SUCCESS: " );
console.log( data );
},
error: function( data ) {
console.log( "AJAX ERROR: " );
console.log( data );
}
});
data.json(样本)
{
"children": [
{
"name": "Main Folder",
"type": "folder"
},
{
"name": "Private folder",
"type": "folder"
}
]
}
我一直在 Stack Overflow 上四处寻找,但我发现没有任何解决方案似乎可以解决我的问题。求助!
编辑:将 jQuery CDN 添加到我的 index.html
。它在那里。我只是忘了把它放在问题中。
编辑 2:更新了 script.js 以反映返回以下屏幕截图的代码。 (屏幕截图在对象中间被截断了。如果对象的上下文实际上是相关的,我可以包括更多内容。)
编辑 3:新 AJAX 错误处理: 新的 ajax 函数:
$.ajax({
url: 'data.json',
dataType: 'json',
success: function( data ) {
console.log( "SUCCESS: " );
console.log( data );
},
error: function(data, textStatus, errorThrown) {
console.log("textStatus: ",textStatus);
console.log("errorThrown: ",errorThrown);
}
});
我现在非常棒地得到这个控制台输出:
使用稍微修改过的代码版本,我让它返回 JSON 就好了:
http://plnkr.co/edit/DMLyJa1Quj7ofszn5Y7o?p=info
$(document).ready(function() {
console.log("ready!");
var items;
$.getJSON('data.json', function(data) {
console.log('json grabbed');
})
.done(function(data) {
items = data.children;
console.log(items);
})
.fail(function(data) {
console.log("Error!");
});
}); // close document.ready
Jquery 现在使用 .done 作为成功方法。在该块中,只需将您的 data.children 项目分配给一个变量,您就可以开始了。
感谢评论中的每个人,我才得以解决问题。这实际上是 JSON 格式问题。我使用这个网站来查找问题所在:https://jsonformatter.curiousconcept.com/