2012-01-18 5 views
2

Je cherche un exemple très simple où une application Rails effectue les opérations suivantes:Exemple simple d'utilisation de Rails JSON avec JQuery?

http://myapp.com/give_me_json 

Les données renvoyées est un JSON:

[{"is_it_working":true, "very_simple_string":"Yes!"}] 

Je veux utiliser la fonction suivante dans JS pour retourner la valeur de "is_it_working". Mais comment??? A la place, cela retournerait le json entier sous la forme d'une chaîne.

+0

Merci les gars pour le commentaire. J'essaie chacune des solutions pour voir laquelle je me sens plus à l'aise :) J'ai lu le site Web jQuery à propos de la méthode json, mais il n'était pas clair sur la façon d'accéder aux paires valeur/clé. –

Répondre

1

En fait, la réponse est array de json object donc vous devez obtenir l'élément de tableau 1er puis la propriété de json. SEE THE EXAMPLE

var response = [{"is_it_working":true, "very_simple_string":"Yes!"}]; 

//1 way 
alert(response[0].is_it_working); 

//2nd way 
$(response).each(function(i,elem){ 
    alert(elem.is_it_working); 
}); 
+1

True, mais voir la réponse par @Diode pour le vrai problème. – Phrogz

1

Vous pouvez y accéder via data.is_it_working à l'intérieur de votre méthode $.get()

+0

-1 ceci n'est pas correct, cela ne marchera pas .. "data.is_it_working" retourne undefined. Dans ce cas, la réponse est un tableau de json. vérifier ma réponse pour plus de détails. –

+0

désolé, devrait être 'données [0] .is_it_working' – cpjolicoeur

+0

Pas si le type mime est faux et le JS ne définit pas l'option" json "dataType pour' $ .get'. – Phrogz

0

aurait également besoin de préciser « JSON » dans la requête get afin que jquery sait quoi faire avec ce qui est retourné

1

Si le type de contenu est un texte

$.get('/give_me_json', function(data) { 
    var response = $.parseJSON(data); // or eval(data) 
    $('.da_place').html(response[0].is_it_working); 
}); 

Si le type de contenu est JSON

$.get('/give_me_json', function(data) { 
    $('.da_place').html(data[0].is_it_working); 
}, "json"); 

Ou

$.getJSON('/give_me_json', function(data) { 
    $('.da_place').html(data[0].is_it_working); 
}); 
+0

C'est le problème. Essayez 'console.log (data)' pour voir que vous avez récupéré une chaîne et non un objet analysé puisque vous avez omis l'argument "json". – Phrogz