2013-01-04 37 views
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文件本身:我试图使用的console.log

{ 
    "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":""). 

,但只有第一个执行而第二个没有,所以我知道$ .getJSON分支的内容根本没有得到执行(意思是$ .getJSON语句是失败的,如果我理解正确的话)。但绝对不会发生脚本错误。

而且,服务器设置为服务JSON文件,另一个测试网站已经执行了一个外部JSON文件就好了。

感觉就像路径是错误的莫名其妙,但我没有得到一个404,我已经重新检查这条道路,以确保语法正确至少有十次。

如果文件的路径是正确的,json文件的语法是否正确,并且服务器肯定配置为提供json文件(如application/json MIME类型为组)?还有什么其他的可能,或者如果分支的其余部分没有执行,第二个console.log不会执行吗?

------------------- UPDATE -------------------------- ---

我已经编辑我的职务,以反映我(错误地)在我的JSON文件的意见。

+4

如果您在浏览器中访问'yourdomain.com/JsonControl/Headline_News.json',你看到的JSON? –

+0

是的,我只看到文本json文件 – VoidKing

+0

尝试使用任何检查工具来检查是否有该json的请求。 –

回答

0

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

1

您应该使用$就因为它允许你指定一个成功,错误和完整的(最后)回调。也许你的回调没有被调用,因为它是一个成功的回调,并且请求返回一个错误。

$.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 
    } 
}); 
+2

$ .getJSON也是一个承诺,因此您也可以使用then/fail/done/error/success/complete回调。看到http://api.jquery.com/jQuery.getJSON/ – Roonaan

+0

@Chifriend这似乎有帮助,我将不得不检查出来。 – VoidKing

+0

他应该使用延缓对象 – Alexander

1

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

$.getJSON("/JsonControl/Headline_News.json", function(jsonObj) { 
    console.log(jsonObj); 
}); 
+0

虽然这不是答案,但它非常有帮助。我一直在寻找一些东西,至少可以告诉我更多关于我做错了什么,但我找不到它。谢谢! – VoidKing

+0

@VoidKing现在你修复了JSON吗? –

+0

因为我发表了评论,是的。我认为javascript评论在json中是合法的。我错了。它正在工作。 – VoidKing

相关问题