Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ajax nie dziala pod FF
Forum PHP.pl > Forum > XML, AJAX
kufalo
Witam,
potrzebuje synchronicznie odpytac serwer

Kod
<script>

  r=new XMLHttpRequest()
  r.onreadystatechange=function(){if(r.readyState==4)alert(r.responseText)}
  r.open('GET','1.txt',false)
  r.send(null)

</script>


nie wiem czemu pod FF 3.0.1 nie dziala, pozostale wyswietlaja okienko alerta.
nexis
Obiekt XMLHttpRequest() nie jest uniwersalny dla wszystkich przeglądarek, więc może spróbuj użyć jQuery:

Kod
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
var GET = {
   init : function(){
         var request = $.ajax({
            url: "1.txt",
            async: false
         }).responseText;
         alert(request);
      }
   };
$(document).ready(function(){
   GET.init();
});
</script>
Luciano
chyba Asynchronicznie biggrin.gif
AjaxSrajax
@luciano chyba jednak synchronicznie - skrypt czeka aż dane się całe ściągną, asynchronicznie - nie.

@nexis Obiekt XMLHttpRequest() nie jest uniwersalny dla wszystkich przeglądarek

nie no, bez jaj, rozmawiamy oo ff 3 biggrin.gif, a nie o przeglądarce z Marsa, ale jak faktycznie nie obsługuje xhr-a to Cie przeprosze, bo przyznam ze jeszcze nie testowalem na ff3 ;O

nie zgubiłeś nawiasów klamrowych i średnika (opcjonalnie z tego co wiem) w IF? : r.onreadystatechange=function(){if(r.readyState==4)alert(r.responseText)}

nie powinno być:

r.onreadystatechange=function(){
if(r.readyState==4) {
alert(r.responseText);
}
};

Aż dziw, że działa w innych, albo o czymś nie wiem...
?
paziek
JavaScript (i nie tylko) pozwala na opuszczanie nawiasów klamrowych, jeśli masz zamiar wykonać tylko jedno polecenie (tutaj akurat alert).
Ba, nowsze VM javascriptu pozwalają na opuszczanie nawiasów klamrowych w funkcjach (lambda).

No i rozwiązanie problemu:

  1. <script>
  2.  
  3.  r=new XMLHttpRequest()
  4.  r.open('GET','gaga',false)
  5.  r.send(null)
  6.  alert(r.responseText)
  7.  //if(r.status == 200)alert(r.responseText)//warto korzystać z status, aby upewnić się, że plik, strona czy cokolwiek tam byś GETował dały nam dobrą odpowiedź, w tym przypadku "OK 200"
  8.  
  9. </script>


W synchronicznych XHR nie używasz onreadystatechange, bo .. jest synchroniczne - nie trzeba! tongue.gif
http://developer.mozilla.org/en/docs/XMLHttpRequest
Cytat
Note: You should not provide an onreadystatechange handler for synchronous requests. If you do, versions of Firefox prior to version 3 call the handler anyway. Firefox 3 blocks until the request is completed (as in the example above). Firefox 2 provides the same behavior as long as you don't implement an onreadystatechange handler.
kubel-junior
witam, ja mam ten sam problem.
pod FF 3.x nie działa request = new XMLHttpRequest();
i teraz zonk bo nie wiem co zrobić...

PS. Pierwszy raz cos działa porpawnie w IE a w FF nie smile.gif lecz to pewnie jest wynik mojej niewiedzy.
nexis
Cytat(kubel-junior @ 1.12.2008, 15:43:37 ) *
pod FF 3.x nie działa request = new XMLHttpRequest();
i teraz zonk bo nie wiem co zrobić...


Uruchom proszę poniższy plik HTML pod Firefox 3.x:

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <head>
  3. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  4. <title>XMLHttpRequest</title>
  5. </head>
  6. <body>
  7. <script type="text/javascript">
  8. if (window.XMLHttpRequest) {
  9. alert("Przeglądarka obsługuje XMLHttpRequest!");
  10. } else {
  11. alert("Przeglądarka nie obsługuje XMLHttpRequest!");
  12. }
  13. </script>
  14. </body>
  15. </html>
kubel-junior
dzieki za pomoc smile.gif mała literówka a ja ślepy jestem
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.