2012-04-03 67 views
2

下面的代碼應該顯示id從我從服務器獲得的JSON對象。我找不到這個錯誤,有人可以幫我嗎?先謝謝你!JSON數據將不會通過jQuerys顯示getJSON()

http://localhost:8387/nscalemc/rest/mon/resourcestatus.json被稱爲這是返回的JSON對象:

{ 
    "groupStatus": [ 
     { 
      "id": "Application Layer Configuration-ApplicationLayer", 
      "time": 1332755316976, 
      "level": 0, 
      "warningIds": [], 
      "errorIds": [] 
     }, 
     { 
      "id": "Application Layer-ApplicationLayer:nscalealinst2", 
      "time": 1333431531046, 
      "level": 0, 
      "warningIds": [], 
      "errorIds": [] 
     }, 
     { 
      "id": "Application Layer-ApplicationLayer:nscalealinst1", 
      "time": 1333431531046, 
      "level": 1, 
      "warningIds": [ 
       "documentarea.locked" 
      ], 
      "errorIds": [] 
     }, 
     { 
      "id": "Storage Layer-StorageLayerInstance1", 
      "time": 1331208543687, 
      "level": 0, 
      "warningIds": [], 
      "errorIds": [] 
     } 
    ] 
} 

我的HTML文件gadget.html

<html> 
<head> 
    <title>Monitor</title> 
    <link href="css/gadget.css" rel="stylesheet" type="text/css" /> 
    <script type="text/javascript" src="js/jquery-1.7.2.js"></script> 
    <script type="text/javascript" src="js/gadget.js"></script> 
</head> 
<body> 
    <div id="content"></div> 
</body> 
</html> 

我的JavaScript文件 「gadget.js」:

fetch_JSON(); 

function fetch_JSON() { 
    var url = "http://localhost:8387/nscalemc/rest/mon/resourcestatus.json"; 

    $.getJSON(url+'?callback=?', function(data) { 
     $(data.groupStatus).each(function() { 
      $('#content').append('<p>ID: ' + $(this).id+ '</p>'); 
     }); 
    }); 
} 

編輯: 謝謝你的解決方案!我通過Firebug的調試,並發現,該的getJSON呼叫狀態爲「401未授權」結束..

+0

btw:是'?callback =?'在getJSON方法中需要? – P4tR 2012-04-03 12:24:47

+0

你確定你的函數正在執行嗎?也許你應該改變你的功能fetch_JSON(){alert('here'); }只是爲了確保 – Churk 2012-04-03 12:26:36

+1

否 - 僅適用於JSONP請求。你可以刪除它。 – 2012-04-03 12:26:37

回答

5

你應該做

$('#content').append('<p>ID: ' + this.id+ '</p>'); 

這裏小提琴http://jsfiddle.net/JaxpC/

編輯 - 當然,你應該使用準備處理,以確保thatthe DOM存在(我不認爲那是因爲我有一個Ajax調用涉及您的情況,但一定要把

$(function() { 
    var url = "http://localhost:8387/nscalemc/rest/mon/resourcestatus.json"; 

    $.getJSON(url+'?callback=?', function(data) { 
     $(data.groupStatus).each(function() { 
      $('#content').append('<p>ID: ' + this.id+ '</p>'); 
     }); 
    }); 
}); 
+0

TY爲解決方案,我已經改變它,但似乎getJSON中的函數將不會執行。我調試它通過螢火蟲和「$(data.groupStatus).each(函數(){」不被稱爲.. – P4tR 2012-04-03 12:46:34

+1

@ P4tR但在螢火蟲(在網絡面板下)你看到通話結束200狀態? – 2012-04-03 12:53:35

+0

啊,我不知道那個面板..通話結束「401未經授權」 – P4tR 2012-04-03 13:03:16

3

呦你正在運行這個腳本並且把它放在div之前。當您嘗試向其追加數據時,#content不存在。

將腳本移動到</body>之前。

+1

+1。或者你可以把它放在$(document).ready(fn);'handler。 – 2012-04-03 12:27:43

+0

@RoryMcCrossan這是正確的,但他正在製作一個AJAX電話,他沒有附加一個事件,所以我不認爲這個問題在那裏 – 2012-04-03 12:35:09

1
$(document).ready(function(){ 

fetch_JSON(); 

function fetch_JSON() { 
    var url = "http://localhost:8387/nscalemc/rest/mon/resourcestatus.json"; 

    $.getJSON(url+'?callback=?', function(data) { 
     $(data.groupStatus).each(function() { 
      $('#content').append('<p>ID: ' + this.id+ '</p>'); 
     }); 
    }); 
} 
});