Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja zwraca undefinied
Forum PHP.pl > Forum > XML, AJAX > AJAX
Wielebny.pl
Moja funkcja zwraca zawsze undefinied nawet jeśli return dam za nawiasami od warunku if(XMLHttpRequestObject). W środku jest Alert który zwraca prawidłową wartość danych odebranych z php (w tym przypadku zawsze są liczbami) zaś funkcja zwraca nic (undefinied). Początkowo myślałem iż dane odebrane z php są ciągiem znaków ale zastosowanie parseInt(str); nic nie poprawiło.Co jest tego przyczyną złego działania ?

  1. function import_file_size()
  2. {
  3. var odpowiedz;
  4. if(XMLHttpRequestObject)
  5. {
  6. XMLHttpRequestObject.open("POST", "./upload_file/funkcje_dla_ajax.php");
  7. XMLHttpRequestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  8. XMLHttpRequestObject.onreadystatechange = function()
  9. {
  10. if (XMLHttpRequestObject.readyState == 4 )
  11. {
  12. if(XMLHttpRequestObject.status == 200)
  13. {
  14. odpowiedz = XMLHttpRequestObject.responseText;
  15. odpowiedz = unescape(odpowiedz);
  16. alert(odpowiedz);
  17. //odpowiedz = parseInt(str);
  18. return odpowiedz;
  19.  
  20. }
  21. }
  22. }
  23. wysylka = 'tresc';
  24. wysylka = escape(wysylka);
  25. XMLHttpRequestObject.send("tresc=" + wysylka);
  26. }
  27.  
  28. }
Wielebny.pl
W linku który podałeś jest problem który mnie dotyczy aczkolwiek składnia kodu jest zupełnie inna niż u mnie co za tym idzie nie wiem jak zastosować return przy on success sadsmiley02.gif . Opisujesz tam też ,że można spróbować wysłać dane synchronicznie ale nie jest to zalecane. W pierwszym przypadku poległem wiec postanowiłem tego spróbować aczkolwiek wynik jest taki sam czyli następna funkcja która odbiera dane z return wskazuje na UNDEFINIED.

mój kod po zmianach :
  1. function import_file_size()
  2. {
  3. var odpowiedz="";
  4.  
  5. if(XMLHttpRequestObject)
  6. {
  7. XMLHttpRequestObject.open("POST", "./upload_file/funkcje_dla_ajax.php",false);
  8.  
  9. var wysylka = 'tresc';
  10. wysylka = escape(wysylka);
  11. XMLHttpRequestObject.send("tresc=" + wysylka);
  12.  
  13. XMLHttpRequestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  14. XMLHttpRequestObject.onreadystatechange = function()
  15. {
  16. if(XMLHttpRequestObject.status == 200)
  17. {
  18. odpowiedz = XMLHttpRequestObject.responseText;
  19. odpowiedz = unescape(odpowiedz);
  20. return odpowiedz;
  21. }
  22. }
  23. }
  24.  
  25. }


proszę o pomoc w tej sprawie.

ps.
Wątek jest w złym dziale.
wookieb
Odpowiedz jest ta sama. Musisz pobierac dane w trybie synchronicznym aby funkcja która wywołuje żądanie ajax, mogła zwrócić z tegoż żądania wynik.
OnSuccess to twoje onreadystatechange ze sprawdzeniem kodu odpowiedzi.
Wielebny.pl
Rozwiązaniem jest CAŁKOWICE USNIĘCIE sprawdzania kodu odpowiedzi czyli tylko normalny kod strukturalny.


  1. XMLHttpRequestObject = new getXMLHttpRequestObject();
  2. var odpowiedz = "";
  3. var tresc = 'tresc=tresc';
  4. if(XMLHttpRequestObject)
  5. {
  6. XMLHttpRequestObject.open("POST", "./upload_file/funkcje_dla_ajax.php",false);
  7. XMLHttpRequestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  8. XMLHttpRequestObject.send(tresc);
  9.  
  10. odpowiedz = XMLHttpRequestObject.responseText;
  11. return odpowiedz;
  12. }
  13. else
  14. alert('cos nie dziala');
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.