2013-01-04 33 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

相關問題