Witam,
mam taki problem. postanowiłem nauczyć się ajaxa. Niestety nie wszystko idzie jak po maśle.

Tworzę w przeglądarce kod odpowiedzialny za stworzenie obiektu XMLHttpRequest. Listing poniżej:
  1. <script type="text/javascript">
  2. function getXMLHttpRequestObject() {
  3. if (window.XMLHttpRequest) {
  4. try {
  5. return new XMLHttpRequest();
  6. }
  7. catch(e) {
  8. return false;
  9. }
  10. }
  11. else if(window.ActiveXObject) {
  12. var wersjeMSXML= new Array (
  13. "MSXML2.XMLHTTP.6.0",
  14. "MSXML2.XMLHTTP.5.0",
  15. "MSXML2.XMLHTTP.4.0",
  16. "MSXML2.XMLHTTP.3.0",
  17. "MSXML2.SMLHTTP",
  18. "Microsoft.XMLHTTP");
  19. for (var indeks in wersjeMSXML) {
  20. try {
  21. return new ActiveXObject(wersjeMSXML[indeks]);
  22. }
  23. catch(e){
  24. }
  25. }
  26. return false;
  27. }
  28. }
  29.  
  30. var XMLHttpRequestObject=getXMLHttpRequestObject();
  31. if(XMLHttpRequestObject) {document.write("Obiekt utworzony");
  32. }
  33. else {
  34. document.write("Nieutworzony");
  35. }
  36. </script>


Mam na stronie element, który na instrukcję onclick wywołuje poniższą funkcję:
  1. function najnowsze30()
  2. {
  3. if (XMLHttpRequestObject) {
  4. var div=document.getElementById("menu_najczesciej");
  5. XMLHttpRequestObject.open("GET", "najczesciej.php?czas=30");
  6. XMLHttpRequestObject.onreadystatechange=function()
  7. {
  8. if (XMLHttpRequestObject.readyState==4 &&
  9. XMLHttpRequestObject.status==200) {
  10. div.innerHTML=XMLHttpRequestObject.responseText;
  11. }
  12. }
  13. XMLHttpRequestObject.send(null);
  14. }
  15. }


Powoduje to podmianę zawartości wartstwy. Wszystko działa za pierwszym razem.
Kiedy kliknę w jakiś link, który znajduje się w tej nowej warstwie skrypt przenosi mnie oczywiście na odpowiednią stronę, ale już nie tworzy się nowy obiekt XMLHttpRequest, przez co to wybrane pole nie odświeża się na onclick(); Kiedy jednak przeładuję stronę zwykłym refreshem, np. klawiszem f5 obiekt na nowo jest utworzony i wszystko działa.

Zaznaczę, że wspomniany problem dotyczy tylko Internet Explorera. Testowałem w wersji IE8. Pozostałe przeglądarki działają.

Ktoś ma pomysł jak to pokonać?

----
znalazłem tymczasowe rozwiązanie.
Sprawdzam czy jest obiekt stworzony, jeżeli nie to wywołuję funkcję windows.location.reload, wstawiłem ją zaraz po komunikacie informującym, że nie stworzono obiektu. Strona się przeładowuje, nie stwarza jakiejś niewygody bo następuje to jeszcze przed załadowaniem całej witryny, i działa. Jednak nie podoba mi się to rozwiązanie, bo w sumie nie o to powinno chodzić.