Daniel Częstki

jestem OK

Zastosowanie notacji JSON w jQuery i PHP

JSON to przydatny format wymiany danych w programowaniu aplikacji opartych głównie o model AJAX, ale nie tylko. Typ MIME dla formatu JSON to application/json.

Korzystając z jQuery format ten musimy stosować w przypadku wymiany danych między aplikacjami umieszczonymi pod różnymi domenami. Powód – względy bezpieczeństwa ;)

jQuery

$.getJSON(
"http://inna-domena.frodo.loc/jsonsearch.php?jsoncallback=?",
function(data) {
$.each(data, function() {
console.log(this);
}
}
);

Jak to działa ? Wywołanie funkcji $.getJSON następuje z 2 parametrami. Pierwszy to adres URL, a drugi to funkcja, w której następuje obsługa pobranych danych. Dane przekazywane są do zmiennej podanej jako parametr tej funkcji (w tym przypadku ‘data’). Zwrócone dane mogą być w postaci tablicy lub obiektu.
W adresie url wymagane jest określenie parametru, który identyfikuje “legalność” połączenia (w moim przypadku jest to jsoncallback=?, ale może być to dowolna nazwa np. kod=?). Wartość tego parametru musi zostać zwrócona na początku wyniku (przed danymi) przez serwer.
Poniższy przykład realizuje tę funkcjonalność:

PHP5
$data = array (array('katarzyna','miaskowska'), array('daniel','czestki'));
$JSData=json_encode($data);
echo $_GET['jsoncallback'] . '(' . $JSData . ');';

Funkcje JSON w PHP4.
Funkcje JSON są dostępne w PHP5 i to dopiero od wersji 5.2.0. Co można z tym fantem zrobić ? Rozwiązanie przynosi klasa stworzona przez Michała Migurskiego oraz poniższy kod:

<?php

include ( "JSON.php");

if (!function_exists ( "json_encode ')) {
function json_encode ($data) {
$json = new Services_JSON ( ) ;
return ( $json -> encode ( $data ) ) ;
}

if (!function_exists('json_decode')) {
function json_decode($data, $output_mode=false) {
$param = $output_mode ? 16:null;
$json = new Services_JSON($param);
return( $json->decode($data));
}
}
?>

Kod jest zaczerpnięty z tej strony wraz z poprawkami podanymi w komentarzu.

Komentarze

Aktualnie 3 komentarzy | dodaj swój komentarz
  1. Świetny artykuł, czegoś takiego właśnie o json szukałem :)

    Komentarz dodany przez Adam dnia 13-4-2009
  2. trochę marnie….po tytule spodziewalem sie czegos bardziej zaawansowanego. Artykuł wygląda jak wycięty z kontekstu….nic nie wyjaśnia i wprowadza jedynie zamieszanie przykładami, które nie wiele mówią…

    Komentarz dodany przez delejt dnia 6-1-2010
  3. Hmm – wg definicji JSON (tak jak XML) służy do wymiany danych między niekompatybilnymi systemami.
    Do wymiany danych między stronami pod różnymi domenami chyba znakomity jest SOAP.
    Ale poprubóję. Zobaczę jak lepiej i wtedy może coś jeszcze skomentuję.

    Komentarz dodany przez Corck dnia 17-2-2010

DODAJ SWOJĄ OPINIĘ

Najnowsze wpisy