ďťż

[HTML, JS, AJAX] Stosowanie AJAX w Operze

       

Podstrony


telcocafe

Ostatnio zacząłem się bawić AJAXem, ale zauważyłem, że skrypty wykożystujące tą technikę nie funkcjonują poprawnie na Operze.
Przykład:
function getXMLHttpRequestObject() { try{ return new XMLHttpRequest(); } catch(e){ try{ return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e){ return false; } } } function pobierzDane() { if(XMLHttpRequestObject){ XMLHttpRequestObject.open("GET", "http://localhost/dane.txt", false); XMLHttpRequestObject.send(null); var tekst = ""; if(XMLHttpRequestObject.status == 200){ tekst = "Z serwera odebrano następujący ciąg znaków:\n" tekst += XMLHttpRequestObject.responseText; } else{ tekst = "Wystąpił błąd podczas pobierania danych."; } div = document.getElementById('div'); div.innerHTML = tekst; } } var XMLHttpRequestObject = getXMLHttpRequestObject();
Wszystko to działa bez problemów na IE6 i FF3.
Ten skrypt zaczerpnąłem z książki AJAX i PHP zmieniając tylko sposób wyświetlania danych (bo mi nie pasował:)). Przed modyfikacją też nie działał. Ma ktoś może pomysł jak przerobić go tak, aby można było używać go także w Operze?



Zastosować jQuery lub inną bibliotekę do JS/Ajax zajmującą się różnicami w implementacji funkcji Ajaxa w różnych przeglądarkach ;)

Spróbuj z podstawową funkcją onreadystatechange oraz sprawdzaniem readyState.if(XMLHttpRequestObject){ XMLHttpRequestObject.open("GET", "skrypt.php"); XMLHttpRequestObject.onreadystatechange = function() { if (XMLHttpRequestObject.readyState == 4) if (XMLHttpRequestObject.status == 200) { //kod } } XMLHttpRequestObject.send(null); }

onreadystatechange + readystate też nie działa. W książce piszą, że onreadystatechange obsługują IE, FF i Netscape, a Opera już nie, dlatego spróbowałem drugim sposobem
Użytkownik czychacz edytował ten post 06 październik 2008, 19:09


A tam! Od opery 9.27 już na pewno jest obsługiwane onreadystatechange. Ja korzystam z tego i działa.
Użytkownik andrzej_aa edytował ten post 06 październik 2008, 22:31
ja korzystam z opery 9.5 i jeśli to nie przez to nie działa ten skrypt to już sam nie wiem...

OK, w takim razie w jaki sposób nie działa? Nic nie jest zwracane czy jak? Pokaż cały kod, może gdzieś w innym miejscu jest błąd.
// Edytowano
@niżej:
No tak :-) Adres względny. Nie można używać Ajaksa do łączenia się z innymi domenami, a Opera zbyt poważnie to wzięła...
Użytkownik andrzej_aa edytował ten post 09 październik 2008, 21:24
poprawiłem adres pliku "dane.txt". Teraz jest to adres "/dane.txt" i wszystko działa też pod operą.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.