2012-04-03 8 views
2

Der folgende Code sollte das id aus dem JSON-Objekt anzeigen, das ich von einem Server erhalten habe. Ich kann den Fehler nicht finden, könnte mir jemand helfen? Vielen Dank im Voraus!JSON-Daten werden nicht über jQuerys angezeigt. GetJSON()

Das JSON-Objekt, das zurückgegeben wird, wenn http://localhost:8387/nscalemc/rest/mon/resourcestatus.json genannt wird:

{ 
    "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": [] 
     } 
    ] 
} 

Meine HTML-Datei 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> 

Meine JavaScript-Datei "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>'); 
     }); 
    }); 
} 

EDIT: Vielen Dank für Ihre Lösungen! Ich über Firebug debuggt und fand heraus, dass die getJSON-Aufruf endet mit dem Status "401 unauthorized" ..

+0

btw: ist '? Rückruf =?' benötigt in der getJSON-Methode? – P4tR

+0

Sind Sie sicher, dass Ihre Funktion ausgeführt wird? Vielleicht solltest du eine Änderung in deine Funktion einfügen fetch_JSON() {alert ('here'); } nur um sicher zu sein – Churk

+1

Nein - nur für JSONP-Anfragen. Sie können es entfernen. –

Antwort

5

Sie

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

Geige hier http://jsfiddle.net/JaxpC/

EDIT tun sollte - natürlich sollten Sie die bereit Handler, um sicherzustellen, dassdie dom vorhanden ist (ich glaube nicht, dass Ihr Fall ist, weil es mir ein ajax-Aufruf beteiligt, aber besser sicher sein,

$(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 für die Lösung, ich habe es geändert, aber es scheint, dass die Funktionen in getJSON nicht ausgeführt werden. ich debuggte es über firebug und "$ (data.groupStatus) .each (function() {" wurde nicht aufgerufen .. – P4tR

+1

@ P4tR aber in firebug (unter dem Netz-Panel) sehen Sie den Anruf mit 200 Status enden? –

+0

ahh, ich wusste nicht über das Panel .. der Anruf endet mit "401 nicht autorisierte" – P4tR

3

Yo Sie führen das Skript sofort aus und haben es vor dem div platziert. #content ist nicht vorhanden, wenn Sie versuchen, Daten an sie anzuhängen.

Verschieben Sie das Skript zu kurz vor </body>.

+1

+1. Oder Sie können es in '$ (Dokument) .ready (FN);' Handler. –

+0

@RoryMcCrossan Dies ist richtig, aber er macht ein AJAX-Anruf, er fügt kein Ereignis hinzu, also glaube ich nicht, dass das Problem dort liegt –

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>'); 
     }); 
    }); 
} 
}); 
Verwandte Themen