Home > AJAX, JavaScript > Cross Domain AJAX

Cross Domain AJAX

Zdarzyło mi się, że potrzebowałem AJAX, gdzie serwer dostarczający dane będzie innym serwerem niż ten, z którego ładowana jest strona internetowa. Model DOM przeglądarek internetowych, w tym obiekt XMLHttpRequest będący podstawą wielu implementacji AJAX, ma zabronione operowanie na danych pobieranych z różnych domen (z różnych serwerów WWW). Na szczęście, miksowanie danych z pobieranych z różnych serwerów WWW jest możliwe – przykładem jest Google AJAX Search Api. Dane z różnych serwerów WWW można miksować, każąc przeglądarce WWW wykonać nowy skrypt JavaScript, np.: document.write. Ja potrzebowałem trochę bardziej zaawansowanego rozwiązania, które umożliwiło by mi między innymi.:
  • Wykonanie procedury po zakończeniu pobierania
  • Grupowanie pobieranych skryptów i wykonaniu procedury po zakończeniu pobierania
  • .
  • No i oczywiście pracę z różnymi domenami WWW
Postanowiłem więc zmodyfikować moją ulubioną bibliotekę AdjAJAX – tak aby zamiast pobierania danych wykonywała skrypt z innej domeny. Sprawdziło się. Powstała biblioteka: Cross Domain AJAX – którą opublikowałem na licencji LGPL, zgodnie z licencją AdvAJAX. Biblioteka Cross Domain AJAX działa prawie tak samo jak AdvAJAX, z tym że zamiast pobierać dane (XML, Text), zmusza przeglądarkę do wykonania JavaScript. Jak tego można używać? Wyobraźmy sobie, że na serwerze A mamy dane, które chcemy udostępnić stronie WWW znajdującej się na serwerze B. Aby tego dokonać na serwer A ładujemy program, który po wykonaniu się zwróci nam kod JavaScript zostawiający w globalnej przestrzeni nazwy przeglądarki obiekt z danymi. Aplikacja z serwera B potrzebuje tych danych. Uruchamia ona moją bibliotekę – Cross Domain AJAX – która ładuje skrypt z serwera A. Po załadowaniu danych z serwera A sterowanie może być przekazane do dowolnej funkcji, na przykład rysującej fontannę. Brzmi to skomplikowanie i może się wydawać zbyteczne – jednak jest na prawdę fajne. Zapraszam do projektu: Cross Domain AJAX.
Categories: AJAX, JavaScript Tags:
  1. hiryuu
    May 8th, 2007 at 16:15 | #1

    Ja uzywam CURL’a lub jezeli szczodrosc adminow jest tak wielka ze CURL’a sie boja, to uzywam iframe’ow. Hula ze az milo.

  2. Antoni Jakubiak
    May 8th, 2007 at 21:17 | #2

    Ale to nie o to chodzi. Czasami trzeba napisać skrypt, udostępniający pewną funkcjonalność Twojej strony – innym stronom WWW. Wtedy najlepiej jest zrobić to tak, żeby po stronie klienta było jak naj mniej kodu. Curl, jest trudniejszy od HTML’a i JavaScriptu. IFrame nie pozowli na pełne dostosowanie usługi u klienta. Dlatego Cross Domain Javascript – najprostszy jest oczywiście JSON.

  3. medyk
    October 13th, 2007 at 13:43 | #3

    Cała idea Ajax’a zawiera się w asynchronicznym działaniu. A Ty piszesz skrypt, który działa synchronicznie i nazywasz to ajax’em :)

  4. Antoni Jakubiak
    October 13th, 2007 at 14:00 | #4

    Nie. Skrypt działa asynchronicznie. Po wysłaniu rządania sterowanie wraca i skrypt wykonuje się asynchronicznie.

  1. No trackbacks yet.

Subscribe without commenting