为什么这个$ .getJSON的回调函数没有被执行?

时间:2013-01-04 17:29:20

标签: javascript jquery ajax json

以下是尝试获取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文件中的评论。

3 个答案:

答案 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语法中不合法。