Mootools 1.1 - Json.Remote.js
24 lipca, 2007
Plik json.remote.js to ostatni składnik grupy Remote. Jest on rozszerzeniem klasy XHR i służy do wymiany danych w formacie JSON za pomocą obiektu XMLHttpRequest.
Posiada on jedną metodę - send oraz jedno własne zdarzenie - onComplete.
Pełna składnia wygląda następująco:
var obiekt = new Json.Remote("adres",{
onComplete: function(json){
// w tej funkcji otrzymujemy uchwyt do pobranego obiektu JSON
// na przykład json.nick
}
}).send({json});
Składnia może się wydać skomplikowana, ale zaraz wszystko po kolei wytłumaczę ;)
Zmienna adres to oczywiście lokalizacja pliku do którego wyślemy obiekt JSON zadeklarowany jako argument metody send. Zdarzenie onComplete definiuje funkcję, która wykona się po zakończeniu zapytania. Może ona pobierać za argument zwrócony przez skrypt obiekt JSON i w ten sposób otrzymujemy uchwyt do tego obiektu w ciele tej funkcji, zatem możemy się później łatwo odwoływać do właściwości tego obiektu.
Klasa Json.Remote działa w ten sposób, że zamienia podany jako argument metody send obiekt na ciąg znaków i jednocześnie od razu zamienia zwrócony przez skrypt ciąg znaków na obiekt JSON.
Przy wywołaniu możemy zdefiniować w opcjach obok zdarzenia onComplete, także parametr secure, którego działanie już znamy po omówieniu metody evaluate klasy Json.
Pora na przykład użycia tej klasy.
Ponieważ nie mam za bardzo gdzie umieścić przykładu ze skryptem odczytującym JSON (Wymaga PHP 5.2.0, a pisanie skryptu, który by to odczytał według mnie mija się z celem dla tak prostego przykładu) więc skupimy się na pobraniu danych w formacie JSON i ich łatwemu odczytaniu.
Pobierzemy z testowej strony następujący obiekt:
{
nazwaPliku: "json.txt",
autorPliku: "Dziudek",
domena: "dziudek.ovh.org"
}
Oczywiście na stronie będzie on widniał w postaci:
{"nazwaPliku": "json.txt","autorPliku": "Dziudek","domena": "dziudek.ovh.org"}
Odczytana zawartość zostanie umieszczona w odpowiednim elemencie strony z przykładem.
Tworzymy obiekt klasy Json.Remote:
new Json.Remote("json.txt").send();
Nasz uchwyt do pobranego obiektu nazwiemy danePliku - tworzymy szkielet zdarzenia onComplete:
new Json.Remote("json.txt",{
onComplete: function(danePliku){
var string = '<strong>Nazwa pliku:</strong> ' + danePliku.nazwaPliku + '<br />';
string += '<strong>Autor pliku:</strong> ' + danePliku.autorPliku + '<br />';
string += '<strong>Domena:</strong> ' + danePliku.domena + '<br />';
$('console').setHTML(string);
}
}).send();
Ważna uwaga - niezależnie od tego czy wysyłamy jakieś dane w formacie JSON, czy tylko zamierzamy je pobrać MUSIMY dodać metodę send - dopiero wtedy będzie można odczytać dane - przy inicjalizacji obiektu jest tylko tworzony obiekt klasy XHR, ale NIE jest wysyłane od razu zapytanie...
Na koniec podpinamy nasz kod pod zdarzenie onclick przycisku i całość umieszczamy jako kod zdarzenia onload (lub DOMContentLoaded jak kto woli) obiektu window.
Działający przykład poniżej:
Jak widać klasa Json.Remote znacząco upraszcza proces wysyłania i pobierania danych zapisanych w formacie JSON. Tą częścią kursu zakończyliśmy omawianie sekcji Remote - w następnej części kursu zajmiemy się efektami, krótko mówiąc będziemy co nieco animowali ;)
Komentarze do wpisu "Mootools 1.1 - Json.Remote.js":
1.
Visa napisał(a):
11 września 2007, 21:45:35
Ogólnie powinna powstać standardowa biblioteka do javascript polaczyc to co najlepsze z prototype js mootools jquery dojo i by bylo git nikogo by juz ni obchodzila jaka przegladarka jakie style i html jaki wc3 standart czy microsoftu a i GUI wkoncu by bylo pozadne
2.
Dziudek napisał(a):
11 września 2007, 21:48:28
@Visa – to co mówisz jest niemożliwe z prostego powodu – wspomniane biblioteki przyciągają ludzi czym innym – jQuery ma swój styl odmienny od MooTools – jedni wolą styl MooTools inni styl jQuery. Poza tym wszystko w jednym stworzyłoby wielką kobyłę, co odstraszyłoby wielu ludzi.
3.
Visa napisał(a):
11 września 2007, 21:49:20
prototype js ma lepsze wspracie dla ajaxa, rquestow i jsona jeden obiet robi wszystko zaleznie jak skonfigurujesz jak przerabiasz no problem a tu ;)
4.
Dziudek napisał(a):
11 września 2007, 21:50:46
@Visa – a w MooTools masz kilka klas, ale bazujących na klasie XHR. Nie chcesz obsługi JSON ? Wywalasz z moo odpowiedni plik i masz lżejszy framework do pobrania :) Kto co lubi ;]
Dodaj komentarz: