0

这是尝试获取 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 语句是失败,如果我理解正确的话)。但是绝对不会发生脚本错误。

此外,服务器设置为提供 json 文件,因为另一个测试站点已经很好地执行了外部 json 文件。

感觉路径在某种程度上是错误的,但我没有得到 404,我已经重新检查了这条路径,以确保它在语法上至少是正确的十几次。

如果文件的路径正确,json 文件的语法正确,并且服务器确实配置为提供 json 文件(例如,设置了 application/json MIME 类型), $.getJSON 命令怎么会失败?如果分支的其余部分不执行,是否还有其他可能,或者第二个 console.log 不会执行?

- - - - - - - - - -更新 - - - - - - - - - - - - - - -

我编辑了我的帖子以反映我(错误地)在我的 json 文件中的评论。

4

3 回答 3

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
  }
});
于 2013-01-04T17:33:39.050 回答
1

试试这个,看看你是否在控制台中返回了 json。

$.getJSON("/JsonControl/Headline_News.json", function(jsonObj) {
   console.log(jsonObj);
});
于 2013-01-04T17:48:52.547 回答
0

JavaScript 注释(或任何其他注释)在 JSON 语法中是不合法的。

于 2013-01-04T17:58:16.877 回答