ďťż

[AJAX] Problem z odświeżaniem

       

Podstrony


telcocafe

Piszę stronę w AJAX-ie z wykorzystaniem PHP. Wszystko szło dobrze do czasu. Zawartość DIV-a z treścią zmienia funkcja changeContent(content). Ładnie działa tylko za pierwszym razem. Gdy chcę ją wywołać za 2-gim razem z tym samym parametrem co poprzednio czyli teorytycznie odświerzyć stronę - FF i IE wywala błąd o tym że "Skrypt na tej stronie może być zajęty lub przestał odpowiadać". Nie wiem co jest tego powodem. Tworzę także swój mechanizm historii oparty na kolejce First in last out. Także jemu nie udało się poprawnie wywołać tej funkcji. Wniosek: Błąd pojawia sie podczas wywoływania funkcji changeContent z poziomu innej funkcji. A oto kod, żeby nie było że to tylko suchy przykład:
funkcja changeContent(content):
function changeContent(content){ displayLoading(); addToHistory(content); array = content.split("."); cat = array[0]; id = array[1]; var he = false; for(var i=0; i<visited.length || he; i++){ if(visited[i]==id){ he = true; } } if(cat == 'view' && !he){ visited.push(id); czy = 'false'; } else{ czy = 'true'; } xmlHttp.open("GET", "get_content.php?content="+content+"&visited="+czy, true); xmlHttp.onreadystatechange = handleChangeContent; xmlHttp.send(null); }
funkcja handleChangeContent()
function handleChangeContent(){ var Content = document.getElementById("content"); if(xmlHttp.readyState == 4){ if(xmlHttp.status == 200){ try{ ajax_result = xmlHttp.responseText; Content.innerHTML = ajax_result; hideLoading(); } catch(e){} } } }
funkcja refresh()
function refresh(){ if(id){ changeContent(cat+'.'+id); } else{ changeContent(cat); } }
funkcje związane z historią:
function addToHistory(elem){ if(myHistory.length!=0){ var last = myHistory.pop(); } else{ var last = ''; myHistory[0] = elem; return true; } if(last==elem){ myHistory.push(elem); return true } else{ myHistory.push(last); myHistory.push(elem); return true } } function previous(){ if(myHistory.length>1){ var last = myHistory.pop(); myHistoryBack.push(last); changeContent(last); } } function next(){ if(myHistoryBack.length!=0){ var last = myHistoryBack.pop(); changeContent(last); } }
Czy wiecie jaka może być tego przyczyna?

EDIT: Problem rozwiązany. Chodziło o pętlę for w funkcji changeContent(content). :)
Użytkownik kokoss15 edytował ten post 09 marzec 2008, 17:01


Szkoda, że kod nie jest w całości, bo nie tutaj leży sedno sprawy. Jak wyglądają funkcje displayLoading i hideLoading. Też miałem kiedyś taki problem. Nie masz przypadkiem na stronie innego elementu o takim samym identyfikatorze? Sprawdź, bo to też może być problem (w Firefoksie wtedy odwołanie występuje w pętli dla każdego elementu o tym samym identyfikatorze).
// Edytowano
No tak, skoro już po ptokach... Ta moderka jednak przeszkadza...
Użytkownik andrzej_aa edytował ten post 09 marzec 2008, 16:31
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.