Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Bardzo dziwny problem
Forum PHP.pl > Forum > XML, AJAX > AJAX
muchol
Witam
Mam problem z funkcją która wykonuje się jedynie wtedy gdy w jej ciele załączę jakiś alert:

Kod JS:
Kod
function runProcess()
      {
          var url = 'plik.php?case=runProcess';
          XMLHttp.onreadystatefunction = function()
              {
                  if(XMLHttp.readystate == 4)
                      {
                          var result = "Chyba sie udalo sie";
                      }
              }
          XMLHttp.open('GET', url, true);
          XMLHttp.send(null);
      }


Kod PHP

Kod
session_start();
  switch($_GET['case'])
  {
      case 'runProcess':
          $_SESSION['process'] = 'runProcess';
      break;
  }


Działający kod JS
Kod
function runProcess()
     {
         var url = 'plik.php?case=runProcess';
         XMLHttp.onreadystatefunction = function
             {
                 if(XMLHttp.readystate == 4
                     {
                         var result = "Chyba sie udalo sie";
                     }
             }
         XMLHttp.open('GET', url, true);
         XMLHttp.send(null);
         alert('dziala');
     }

Ktoś dopomoże?
sowiq
Cytat
XMLHttp.onreadystatefunction = function ()

Cytat
if(XMLHttp.readystate == 4)


A na przyszłość staraj się odrobinę dokładniej opisywać swój problem.
muchol
Błąd przy kopiowaniu ;] (sory)
Ktoś jeszcze spróbuje? smile.gif
sowiq
Cytat(muchol @ 25.02.2009, 12:59:34 ) *
Ktoś jeszcze spróbuje? smile.gif
A to jakiś konkurs? Może sam byś spróbował pomyśleć?
muchol
Walczę od 2 dni. Metodą prób i błędów doszedłem do tego że kiedy jest alert() to funkcja JS się wykonuje.

Przekopałem troche netu. Znalazłem wskazówkę żeby zmienić metodę wysyłania na POST, ale też nie pomogło.

Więc żaden konkurs, jestem zdesperowany jedynie winksmiley.jpg.
sowiq
Cytat(muchol @ 25.02.2009, 12:56:18 ) *
wykonuje się jedynie wtedy gdy w jej ciele załączę jakiś alert

AJAX - Asynchroniczny* JavaScript i XML
* to słowo ma decydujące znaczenie w Twoim dzisiejszym problemie. Poczytaj.
muchol
Wydaje mi się że nie w tym rzecz.
Przerobiłem też akcję ze zwracaniem XMLa z wiadomością (w case 'runProcess').

<root>
<message>Udało się</message>
</root>

To samo. :/
sowiq
Taj jak napisałem w poprzednim poście, poczytaj co to znaczy, że AJAX jest asynchroniczny. Łatwiej Ci będzie rozwiązać problem jeżeli sobie uświadomisz z czego on wynika.

A co do pliku PHP - nie ma żadnego znaczenia co on zwraca.
bazyliszek83
Cytat(sowiq @ 25.02.2009, 13:32:09 ) *
Taj jak napisałem w poprzednim poście, poczytaj co to znaczy, że AJAX jest asynchroniczny. Łatwiej Ci będzie rozwiązać problem jeżeli sobie uświadomisz z czego on wynika.

A co do pliku PHP - nie ma żadnego znaczenia co on zwraca.


Dokladnie. Tak jak kolega napisał, ajax działa z reguły asynchronicznie... to oznacza że blok kodu :
  1. XMLHttp.onreadystatefunction = function()
  2. {
  3. if(XMLHttp.readystate == 4)
  4. {
  5. var result = "Chyba sie udalo sie";
  6. }
  7. }


wykona się dopiero po poprawnej odpowiedzi z serwera, a czasami trwa to chwile... Polecam plugin do firefoxa Firebug pozwoli ci on m.in. obejrzeć idące Ajaxem zapytania...

Natomiast w twoim kodzie polecałbym wrzucić alert(result) w miejsce sekcji:
  1. XMLHttp.onreadystatefunction = function()
  2. {
  3. if(XMLHttp.readystate == 4)
  4. {
  5. var result = "Chyba sie udalo sie";
  6. alert(result);
  7. }
  8. }


Wtedy będziesz miał namacalny przykład tego że serwer odpowiada poprawnie.

P.S. Na drugi raz wrzuć proszę całość kodu, wtedy na pewno łatwiej będzie pomoc.
muchol
XMLHttp.onreadystatefunction => XMLHttp.onreadystatechange ;] i tak jakby pomogło. Sory za zamieszanie.
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.