Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: AJAX - bład w kodzie
Forum PHP.pl > Forum > XML, AJAX
SN@JPER^
Witam,

robie skrypt kalkulatora opartego o AJAX, i jest jeden problem, bowiem podczas gdy próbuje uruchomic skrypt wyświetla mi się komunikat(nie mówiac juz, że trzy razy)

zreszta skrypt można obejrzec http://www.spurspage.com/kalkulator/

Czego to może byc przyczyna ?
siemakuba
Jeżeli dobrze zrozumiałem twój kod, to komunikat o którym piszesz wyskakuje wtedy, kiedy readyState jest różne niż 4.

Kod
if(xmlHttp.readyState == 4)
{
// twój kod
}
else
{
    alert("Nie mozna usyskac odpowiedzi, prosze spróbowac pózniej!");
}


Wszystko jest więc jasne. Zajrzyj pod ten link http://www.w3schools.com/ajax/ajax_xmlhttprequest.asp

wartość readyState zmienia się, zanim dojdzie do wartości 4 i za każdą zmianą sprawdzane jest, czy wartość -- 4. Stąd tyle komunikatów.

Lepiej chyba sprawdzić, czy zapytanie zakończyło się pomyślnie, i dopiero pokazać komunikat.

pozdr.
SN@JPER^
Czy może być tak(Czy sugerujesz lepsze rozwiązanie) ?:

  1. <?php
  2. //tworzymy zmienna xmlHttp w celu stworzenia obiektu
  3. var xmlHttp = createXMLHttp();
  4.  
  5. function createXMLHttp()
  6. {
  7.  
  8. try
  9. {
  10. xmlHttp = new XMLHttpRequest();
  11. }
  12.  
  13. catch(e)
  14. {
  15.  
  16. try
  17. {
  18. xmlHttp = new ActiveXObject("Microsoft.XMLHttp");
  19. }
  20. catch(e){}//ignorujemy blad
  21.  
  22. } //koniec glównego try i catch(e)
  23.  
  24. //warunki itp.
  25. if(!xmlHttp)
  26. {
  27. alert("Blad! - spróbuj pózniej");
  28. }
  29. else
  30. {
  31. return xmlHttp;
  32. }
  33.  
  34. }//koniec funkcji
  35.  
  36.  
  37. function process()
  38. {
  39.  
  40. if(xmlHttp)
  41. {
  42.  
  43. try
  44. {
  45. //tworzymy sobie zmienne
  46. var pierwsza_liczba = document.getElementById("pierwsza_liczba").value;
  47. var druga_liczba = document.getElementById("druga_liczba").value;
  48. var przez = document.getElementById("przez").value;
  49.  
  50. var parametry = "pierwsza_liczba=" + pierwsza_liczba + "&druga_liczba=" + druga_liczba + "&przez=" + przez;
  51.  
  52. xmlHttp.open("GET", "wynik.php?" + parametry, true);
  53. xmlHttp.onreadystatechange = reservers;
  54. xmlHttp.send(null);
  55. }
  56. catch(e)
  57. {
  58. alert("Nie mozna polaczyc sie z serwerem, prosze spróbowac pózniej !");
  59. }
  60. }
  61.  
  62. }//koniec funkcji
  63.  
  64. function reservers()
  65. {
  66.  
  67.  
  68.  
  69. if(xmlHttp.status == 200)
  70. {
  71. response = xmlHttp.responseXML;
  72. //pobieramy element glówny 
  73. xmlDocumentElement = response.documentElement;
  74. //pobiera wiadomosc tesktowa pierwszego potomka elementu documenty
  75. hello = xmlDocumentElement.firstChild.data;
  76.  
  77. tresc = document.getElementById("tresc");
  78. tresc.innerHTML = hello;
  79.  
  80. } 
  81.  
  82.  
  83.  
  84. else
  85. {
  86. alert("Nie mozna usyskac odpowiedzi, prosze spróbowac pózniej!");
  87. }
  88.  
  89. }
  90. ?>
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.