2012-02-25 6 views
1

Ok, j'ai une Java Servlet qui retourne du JSON (In Application/JSON format). Pour ce faire, j'utilise la librairie GSON.Réponse Parse JSON de Servlet

La méthode Servlets GET prend un paramètre, ID. Le servlet semble fonctionner, par exemple, le chrome montre ma demande GET AJAX retour ce qui suit lorsque l'ID [Réservation] paramater est envoyé 1.

0: {WidgetID:46, BookingID:1, X:393, Y:50, Content:Test1} 
    1: {WidgetID:47, BookingID:1, X:337, Y:251, Content:Test2} 
    2: {WidgetID:48, BookingID:1, X:97, Y:198, Content:Test3} 

Le problème que je suis est avec l'analyse de cette réponse. Voici mon code JS:

 
    loadPositions() { 
    var BookingID = 
    if (BookingID != null && BookingID != "null") 
    { 
    var data = {"id" : BookingID}; 
    $.getJSON("Widget", data, function(data) { 
    // Successfully got all this bookings widgets as JSON, TODO: Parse this! 
    }); 
    } 
    }

Que dois-je mettre dans le "TODO: Parse ce" section? Je veux foreach sur tous les éléments, et saisir leurs données. Je suis vraiment nul avec ce truc de JQuery.

+0

Exécutez votre JSON via http://jsonlint.com/ - est-il valide? –

+0

Je ne le pense pas: JSON exige que les clés soient des chaînes, entourées de guillemets, et que les valeurs soient ints ou, encore une fois, des chaînes entourées de guillemets doubles. – bdares

+0

Je pense que JQuery mange mon JSON? Comme si je vais à http: // localhost: 8080/BookingSystem/Widget? Id = 1 dans mon navigateur, j'obtiens différent (valide) JSON: [{"WidgetID": 46, "BookingID": 1, "X": 393, "Y": 50, "Contenu": "Test1"}, {"WidgetID": 47, "BookingID": 1, "X": 337, "Y": 251, "Contenu": "Test2"} , {"WidgetID": 48, "BookingID": 1, "X": 97, "Y": 198, "Contenu": "Test3"}] –

Répondre

4

Dans la section todo, vous devez faire ce qui suit à boucle à travers tous les tableaux:

$.each(data, function(index,value){ 
    // here index=0 & value.WidgetID=46, value.BookingId = 1, use it as you would like to. 

}) 
+0

Cela a fonctionné très bien, merci! –

1

Jetez un oeil à jQuery .each()

http://api.jquery.com/jQuery.each/

et pour une bonne exemple de ce que vous voulez faire ...

http://api.jquery.com/jQuery.getJSON/

$.getJSON('ajax/test.json', function(data) { 
    var items = []; 

    $.each(data, function(key, val) { 
    items.push('<li id="' + key + '">' + val + '</li>'); 
    }); 

    $('<ul/>', { 
    'class': 'my-new-list', 
    html: items.join('') 
    }).appendTo('body'); 
});