Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z "podwójnym kliknięciem"
Forum PHP.pl > Forum > XML, AJAX > AJAX
wizu
Witam. Stworzyłem sobie stronkę z wykorzystaniem czystego XMLHttpRequest. Beż żadnych bibliotek.
Między innymi mam coś takiego:
Kod
function getXMLHttpRequest()
{
    var request = false;
    try
    {
        request = new XMLHttpRequest();
    } catch(err1)
    {
        try
        {
            request = new ActiveXObject('Msxml2.XMLHTTP');
        } catch(err2)
        {
            try
            {
                request = new ActiveXObject('Microsoft.XMLHTTP');
            } catch(err3)
            {
                request = false;
            }
        }
    }
  return request;
}
var r;
r = getXMLHttpRequest();

function processResponse()
{
    if (r.readyState == 4)
    {
        if (r.status == 200)
        {
            document.getElementById('glownaczesc').innerHTML = r.responseText;
        }
    }
}

I po kliknięciu w coś mam powiedzmy:
Kod
function wczytaj(funkcja)
{
    r.open('GET', 'wyswietl.php?funkcja='+funkcja, true);
    r.onreadystatechange = processResponse;
    r.send(null);
}


Wszystko działa elegancko jednak problem pojawia się, gdy mam powiedzmy dwa przyciski, które maja za zadanie wczytać w document.getElementById('glownaczesc').innerHTML dwie różne rzeczy. Klikam powiedzmy w pierszy przycisk, wczytuje się, jednak gdy nie poczekam aż się wczyta i kliknę w drugi przycisk, to wczytywanie leci w nieskończoność :/ Można coś z tym zrobić bez używania jakiś bibliotek, bo chyba nie ma sensu w moim przypadku. Z góry dzięki za pomoc.
bazyliszek83
Ja bym polecał jednak coś sprawdzonego : jQuery lub Prototype. Te biblioteki są naprawdę łatwe w obsłudze i dobrze udokumentowane.

Natomiast jeśli nadal upierasz się przy swoim kodzie to proponowałbym tworzenie obiektu XMLHttpRequest przy każdym wywołaniu funkcji wczytaj.
Teraz działa to u ciebie tak że zawsze działasz na jednym obiekcie przez co np. klikając na przycisk1 i zaraz potem przycisk2 , zapytanie które poszło po kliknieciu na przycisk1 zostaje przerwane i leci zapytanie z przycisku2.

Nie zdarzyło mi się natomiast wczytywanie w nieskończoność, gdy próbowałem twój kod.
wizu
Cytat
Teraz działa to u ciebie tak że zawsze działasz na jednym obiekcie przez co np. klikając na przycisk1 i zaraz potem przycisk2 , zapytanie które poszło po kliknieciu na przycisk1 zostaje przerwane i leci zapytanie z przycisku2.

Nie zdarzyło mi się natomiast wczytywanie w nieskończoność, gdy próbowałem twój kod.

Ja właśnie bym chciał, aby przerywało połączenie i zaczęło nowe. A teraz, to mi naprawdę wczytuje w nieskończoność.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.