2009-02-05 16 views
5

Czytałem o Ajax i chciałbym zobaczyć od społeczności stackoverflow, jeśli wszystko rozumiem poprawnie.Czy poprawnie rozumiem Ajax?

Tak więc normalna interakcja z serwerem klienta polega na tym, że użytkownik uruchamia typ przeglądarki w adresie URL, a żądanie HTTP jest wysyłane do serwera z żądaniem strony i zasobów (css, fotki) z serwera WWW. Serwer sieciowy odpowiada klientowi za pośrednictwem protokołu HTTP żądaną stronę/zasoby, a przeglądarka renderuje html/JavaScript dla użytkownika, aby wyświetlić stronę.

1) Czy można bezpiecznie powiedzieć, że obiekt XMLHttpRequest (XHR) wykonuje ten sam proces, co przeglądarka, z wyjątkiem sytuacji, gdy nie żądasz html od serwera, tekst żądania w jakimś formacie?

2) Czy to prawda, że ​​obiekt XHR jest podobny do zwykłego obiektu, którym może manipulować program tworzący obiekt (jak normalny obiekt), ale także wysyła i odbiera dane za pomocą innego programu (serwera WWW) za pośrednictwem HTTP?

3) Tak więc w moim umyśle, gdy XHR jest tworzony, jest on ładowany do pamięci i ustawiamy niektóre z argumentów obiektów, gdy wykonujemy request.open ("GET", URL, true). Gdy zrobimy request.send (null), obiekt zasadniczo próbuje "pobrać" URL przez HTTP, a gdy tylko otrzymamy dane z serwera, zostanie umieszczony w argumencie responseText. Czy rozumiem to poprawnie?

4) Również synchroniczne vs asynchroniczne. Kiedy myślę o synchronicznym, myślę o krokach, które należy wykonać w porządku. Na przykład naciskam przycisk, dane są wysyłane na serwer i muszę poczekać, aż dane powrócą, zanim będę mógł zrobić cokolwiek innego. Przy połączeniach asynchronicznych naciskałbym przycisk, dane są wysyłane na serwer, robię to, co chcę, a dane są odesłane. Czy to dobra analogia?

Odpowiedz

7

1) Nie. Obiekt XMLHttpRequest robi dokładnie to, co sugeruje jego nazwa - inicjuje żądanie HTTP. To żądanie może być w formacie XML, HTML lub PHP. Pod koniec dnia przeglądarka nie dba o to, ponieważ w żądaniu AJAX nie analizuje żądania - musisz to zrobić sam. Więc nie powoduje automatycznego renderowania HTML z żądania AJAX.

2) Nie jestem pewien co do manipulacji (obiekt XHR może być niezmienny), ale możliwe. Czy kiedykolwiek musiałbyś go rozszerzyć lub manipulować nim? Tak, możesz zmienić właściwości obiektu i tak dalej. Przepraszam. Na początku Cię nie rozumiałem :)

3) Tak.

4) To wspaniała analogia. Dokładnie to się dzieje. Inną analogią jest 4-pasmowa autostrada do asynchronicznej jako ulicy jednokierunkowej do synchronicznej. Jeśli jeden samochód zepsuje się na 4-pasmowej autostradzie, reszta może poruszać się z normalną prędkością - ale jeśli zepsuje się na drodze jednokierunkowej, wszystko się zawiesza. :)

+0

myślę manipulować XHR prostu oznaczało zestaw właściwości i metod wezwać obiektu. – andynormancx

+0

Większość jednokierunkowych ulic, jakie widziałem, to wielopasmowe ... :) –

0

Wygląda na to, że posiadasz wiedzę na temat działania AJAX. Nie widzę zbyt wiele, aby się z tym nie zgodzić w podsumowaniu instalacji AJAX.

Powiedziałbym jednak, że z obiektem XMLHttpRequest nie jesteś ograniczony do GET. Możesz także użyć instrukcji POST i innych czasowników HTTP.

Przy wywołaniach asynchronicznych rejestruje się funkcję wywołania zwrotnego, obiekt XMLHttpRequest wywołuje metodę po zakończeniu żądania asynchronicznego.

0

Wydaje się dla mnie ok.

Twój pierwszy punkt nie jest jednak całkowicie poprawny, możesz zażądać html z serwera używając ajaxa, który nie musi tekstować, json lub xml jak większość przykładów.