Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Bardzo dziwny problem, Alert decyduje o wykonaniu funkcji
muchol
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 19.05.2008
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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?

Ten post edytował muchol 25.02.2009, 13:00:52
Go to the top of the page
+Quote Post
sowiq
post
Post #2





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat
XMLHttp.onreadystatefunction = function ()

Cytat
if(XMLHttp.readystate == 4)


A na przyszłość staraj się odrobinę dokładniej opisywać swój problem.

Ten post edytował sowiq 25.02.2009, 12:59:20
Go to the top of the page
+Quote Post
muchol
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 19.05.2008
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Błąd przy kopiowaniu ;] (sory)
Ktoś jeszcze spróbuje? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował muchol 25.02.2009, 13:00:34
Go to the top of the page
+Quote Post
sowiq
post
Post #4





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(muchol @ 25.02.2009, 12:59:34 ) *
A to jakiś konkurs? Może sam byś spróbował pomyśleć?
Go to the top of the page
+Quote Post
muchol
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 19.05.2008
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) .
Go to the top of the page
+Quote Post
sowiq
post
Post #6





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
muchol
post
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 19.05.2008
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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. :/

Ten post edytował muchol 25.02.2009, 13:19:41
Go to the top of the page
+Quote Post
sowiq
post
Post #8





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
bazyliszek83
post
Post #9





Grupa: Zarejestrowani
Postów: 81
Pomógł: 6
Dołączył: 24.07.2007
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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.

Ten post edytował bazyliszek83 26.02.2009, 15:25:44
Go to the top of the page
+Quote Post
muchol
post
Post #10





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 19.05.2008
Skąd: Kraków

Ostrzeżenie: (0%)
-----


XMLHttp.onreadystatefunction => XMLHttp.onreadystatechange ;] i tak jakby pomogło. Sory za zamieszanie.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.09.2025 - 11:17