以下是尝试获取json文件的脚本:
jQuery(function($) {
//////////////////////HEADLINE NEWS JSON SERVER START///////////////////////////
var container = $("#headlineNews"); //cache the element
console.log("First Log message is here!")
$.getJSON("/JsonControl/Headline_News.json", function(jsonObj) {
console.log("Second Log message is here!")
var val = "";
for (var i = 0; i < jsonObj.news.length; ++i) {
val += "<div id='newsHeading'>"
+ jsonObj.news[i].heading
+ "</div><br/><div id='newsSummary'>"
+ jsonObj.news[i].summary
+ "</div><br/>";
if (jsonObj.news[i].linkText != "" && jsonObj.news[i].linkPath != "") {
val += "<a href='" + jsonObj.news[i].linkPath + "'>" + jsonObj.news[i].linkText + "</a><br/><br/>";
}
val += "<div class='entryDivider'>____________________________________________________</div>";
}
container.html(val);
});
//////////////////////HEADLINE NEWS JSON SERVER END/////////////////////////////
});
这是json文件本身:
{
"news": [
{
"heading": "Bulky Item Pick-Up to Begin May 4th, 2012 for Residential Utility Account Holders.",
"summary": "Click on the link below for more details.",
"linkText": "Bulky Item Pick-Up",
"linkPath": "/Displayable Files/City_Bulk_Pick_Up_for_e_mailing.pdf"},
{
"heading": "NOW OPEN!",
"summary": "OKMULGEE RECYCLING CENTER<br/>301 E. 3rd Street<br/>(Corner of E. 3rd St. and N. Muskogee Ave.).",
"linkText": "WHAT TO AND WHAT NOT TO RECYCLE",
"linkPath": "/Displayable Files/Recycling_Items.pdf"}
]
}
//To omit any of these options, simply leave them blank (i.e., "linkText":"").
我试图使用console.log,但只有第一个执行而第二个没有执行,所以我知道$ .getJSON分支的内容根本没有执行(意味着$ .getJSON)声明是失败的,如果我理解正确的话)。但绝对不会发生脚本错误。
此外,服务器IS设置为提供json文件,因为另一个测试站点已经执行了外部json文件。
感觉路径在某种程度上是错误的,但我没有得到404,我已经重新检查了这条路径,以确保它在语法上至少正确十几次。
如果文件的路径正确,json文件的语法正确,并且服务器肯定配置为提供json文件(例如,应用程序/ json MIME类型已设置),$ .getJSON命令如何失败)?它还有什么可能吗?如果分支的其余部分没有,第二个console.log是否会执行?
------------------- UPDATE --------------------------- -
我已经编辑了我的帖子,以反映我(错误地)在我的json文件中的评论。
答案 0 :(得分:1)
您应该使用$ .ajax,因为它允许您指定成功,错误和完成(最终)回调。也许你的回调没有被调用,因为它是一个成功的回调,并且请求返回了一个错误。
$.ajax({
url: 'ajax/test.html',
type: 'POST',
data: jsonData
success: function(data) {
$('.result').html(data);
alert('Load was performed.');
},
error: function(request, status, error) {
//do stuff
}
});
答案 1 :(得分:1)
试试这个,看看你是否在控制台中返回了json。
$.getJSON("/JsonControl/Headline_News.json", function(jsonObj) {
console.log(jsonObj);
});
答案 2 :(得分:0)
JavaScript注释(或任何其他)在JSON语法中不合法。