Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: JS + XMLHttpRequest nie działa jak należy
Forum PHP.pl > Forum > Po stronie przeglądarki
winuser
Mam kod :

  1. <script language="JavaScript">
  2.  
  3. function processData(data) {
  4.  
  5. document.write(data);
  6. }
  7.  
  8. function handler() {
  9.  
  10. document.MainForm.fileURL.value = this.readyState;
  11.  
  12. if (this.readyState == 4)
  13. {
  14. processData(this.responseText);
  15. }
  16. }
  17.  
  18. function submitForm() {
  19.  
  20. var xhr = null;
  21.  
  22. try
  23. {
  24. xhr = new XMLHttpRequest();
  25. xhr.overrideMimeType('text/xml');
  26. }
  27. catch(e)
  28. {
  29. try
  30. {
  31. xhr = new ActiveXObject("Msxml2.XMLHTTP");
  32. }
  33. catch (e2)
  34. {
  35. alert("An exception occurred in the script. Error name: " + e.name + ". Error message: " + e.message);
  36. }
  37. }
  38.  
  39. xhr.onreadystatechange = handler;
  40.  
  41. xhr.open('GET','http://google.pl', true);
  42. xhr.send("");
  43.  
  44. }
  45.  
  46. </head>
  47.  
  48. <FORM method="POST" name="MainForm" action="">
  49. <INPUT type="text" name="fileURL" value="testURL">
  50. <INPUT type="submit" value="Pobierz" ONCLICK="submitForm()">
  51. </FORM>
  52. </body>
  53.  
  54. </html>


Dlaczego to nie działa ? Czasem daje w wyniku "1" a czasem "2" (w polu fileURL czyli wartość this.readyState).
thek
To lepiej zobacz jakie wartości może przyjmować readyState i co one oznaczają. 4 to "skrypt otrzymał wszystkie dane", czyli zapewne AJAX dostał z serwera jakiś wynik ostateczny. Ale jak sam widzisz, przed 4 są inne liczby i one też coś oznaczają. Ogólnie mają one znaczenie:
0 - nie zainicjalizowano,
1 - trwa ładowanie danych,
2 - ładowanie zakończone,
3 - interakcja z serwerem
4 - zakończono

Jak więc widzisz stany wspomiane są normalne i konkretną rzecz oznaczają. W Twoim wypadku stawiałbym na przeciążony serwer, który zbyt długo nie odpowiada i "zawiesza" AJAXa.
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.