2009-08-11 3 views
9

Czy jQuery ma wbudowaną obsługę JSON lub czy muszę używać wtyczki, takiej jak jquery.json-1.3.min.js?Czy jQuery ma wbudowaną obsługę JSON?

+2

Kodowanie lub dekodowanie? –

+0

Nie widzę, jak to jest związane z programowaniem? – geejay

+9

@geejay nie masz? jquery jest javascript, AJAX, json, wszystkie są bardzo związane z programowaniem. – JasonDavis

Odpowiedz

9

Można również użyć $ .ajax i ustawić dataType option do "json":

$.ajax({ 
     url: "script.php", 
     global: false, 
     type: "POST", 
     data: ({id : this.getAttribute('id')}), 
     dataType: "json", 
     success: function(json){ 
     alert(json.foo); 
     } 
    } 
); 

Również $.get i $.post mieć opcjonalny czwarty parametr, który pozwala na ustawić typ danych odpowiedzi, np

$.postJSON = function(url, data, callback) { 
    $.post(url, data, callback, "json"); 
}; 

$.getJSON = function(url, data, callback) { 
    $.get(url, data, callback, "json"); 
}; 
+1

to jest sposób, w jaki próbuję to zrobić właściwie, otrzymuję odpowiedź json z wywołania ajax, więc jest to idealne dla mojej sytuacji! – JasonDavis

9

Tak, absolutnie tak. Można zrobić coś takiego:

$.getJSON('/foo/bar/json-returning-script.php', function(data) { 
    // data is the JSON object returned from the script. 
}); 
+1

dziękuję, to dobrze wiedzieć, w mojej sytuacji odpowiedź karim79 jest taka, jak tego potrzebuję. +1 Zastanawiam się, dlaczego mają wtyczkę dla jsona, jeśli jest ona wbudowana !? – JasonDavis

1

wsparcie jQuery JSON jest uproszczone, rzucanie ostrożność do wiatru. Użyłem $.ajax, a następnie przeanalizuję tekst odpowiedzi za pomocą json.org javascript library. Analizuje leksykalnie, aby uniknąć używania eval() i prawdopodobnie wykonywania dowolnego kodu.

+2

zalecane json2.js z json.org faktycznie używa eval. Ma po prostu skomplikowany kod sanitacyjny, który jest uruchamiany przez źródło json. Istnieje parser leksykalny jako element zastępczy, ale działa on znacznie wolniej. – Breton

+0

Dzięki za wyjaśnienia. – spoulson

1

jQuery obsługuje dekodowania JSON, ale nie obsługuje kodowania out-of-the-box. Do kodowania potrzebujesz wtyczki, oddzielnej biblioteki lub przeglądarki obsługującej natywnie komendy JSON.stringify i JSON.parse.