Przeładowywanie elementu strony na żądanie serwera.

0

Witam.

Z programowaniem webowym miałem bardzo mało związku a potrzebuje napisać sobie małą aplikację webową stąd prośba o Waszą pomoc.
Działać ma to tak, że mamy stronę z głównym kontenerem, oraz ze listą wyboru.
Po kliknięciu w jakiś element w głównym kontenerze ma pojawić się jakaś treść.
Problem (dla mnie ;)) w tym że ma to być używane przez kilka osób jednocześnie.
Czyli klika osób ma otwartą taką stronę i kto chce to klika, a po takim kliknięciu wszystkim zmienia się treść w głównej części okna.

Z tego co sam szukałem to do takiego "zdalnego odświeżania" muszę do tego wykorzystać Ajaxa tak?
Oczywiście nie liczę na gotowca, tylko na zbiór haseł czego szukać żeby po zapoznaniu się z tym coś takiego naskrobać.

Z góry dziękuję.

0

Strona musi na bieżąco odpytywać serwer czy zaszły jakieś zmiany i serwer będzie wysyłał odświeżoną wersję do załadowania do głównego kontenera lub informacje o braku zmian. Tak, AJAX. Żeby serwer nie musiał pamiętać wszystkich swoich klientów dobrze też, żeby wraz ze stroną wysyłał "numer wersji" np. jako timestamp. Wtedy strona wysyłałaby ostatni otrzymany timestamp w zapytaniu, a serwer sprawdzał czy to aktualna wersja, czy aktualny timestamp jest większy.

Można też podejść do tego inaczej i serwer zawsze wysyłałby aktualną wersję, nie trzeba się wtedy martwić "numerem wersji", ale takie rozwiązanie generowałoby potencjalnie duży ruch i mogło (choć nie musiało) negatywnie wpłynąć na wygląd strony w czasie ciągłego przeładowywania na to samo...

0

Tu masz na szybko prymitywną wersję z użyciem jQuery:

// pobieranie aktualnej opcji z serwera
(function getOption(){
    $.ajax({
        dataType: 'json',
        url: 'url_do_skryptu_zwracajacego_aktualna_zakladke',
        success: function(response) {
            // dalsza obróbka zwróconego jsona (response)
            setTimeout(getOption, 1000); // odświeżanie co 1000ms
        },
        error: function() {
            // obsługa błedu serwera
        }
    });
})();

// wysyłanie aktualnej opcji na serwer
$( "#id_listy" ).change(function() {
    $.ajax({
        type: 'POST',
        data: {option: this.value}, // tu przekazywane są zmienne POST (?option=wartosc_opcji)
        dataType: 'json',
        url: 'url_do_skryptu_zapisującego_zakladke',
        success: function(response) {
            // tu możesz ewentualnie zwrócić
        },
        error: function() {
            // obsługa błedu serwera
        }
    });
});
0

Ehm, Comet.
Broń boże żadne odpytywanie serwera co sekundę!

0

Dziękuję Panowie.

Znalazłem jakieś przykłady wykorzystania Comet w ASP.NET więc będę walczył :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1