Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z funkcją js/ajax
bagsiur
post 15.08.2011, 08:18:32
Post #1





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 28.11.2008
Skąd: Będzin

Ostrzeżenie: (10%)
X----


Nie do końca wiedziałem w jakim dziale umieścić temat.

Mam problem z jedną funkcją w js, z nieznanego mi powodu funkcja nie zwraca wartości. Oto kod:

[JAVASCRIPT] pobierz, plaintext
  1. var XMLHttpRequestObject_postep = false;
  2.  
  3. if (window.XMLHttpRequest){
  4. XMLHttpRequestObject_postep = new XMLHttpRequest();
  5. }
  6. else if (window.ActiveXObject){
  7. XMLHttpRequestObject_postep = new ActiveXObject("Microsoft.XMLHTTP");
  8. }
  9.  
  10. function postep(){
  11. if(XMLHttpRequestObject_postep){
  12. XMLHttpRequestObject_postep.open("GET", "postep.php");
  13. XMLHttpRequestObject_postep.onreadystatechange = function(){
  14. if(XMLHttpRequestObject_postep.readyState==4 && XMLHttpRequestObject_postep.status == 200){
  15. var prog = parseInt(XMLHttpRequestObject_postep.responseText);
  16. return prog;
  17. }
  18. }
  19. XMLHttpRequestObject_postep.send(null);
  20. }
  21. }
[JAVASCRIPT] pobierz, plaintext


Może jeszcze wytłumaczę o co mi chodzi. Piszę progressbar dla swojego skryptu php wysyłającego maile. Przy każdym obrocie pętli zwiększam zmienną sesyjną. Z kolei progresbar który uruchamia się przy starcie skryptu pobiera sobie aktualny postęp za pomocą tej funkcji która tak naprawdę podaje tylko zmienną sesyjną. Czy to dobry sposób myślenia? Zawsze jest możliwość napisać coś takiego przy pomocy flush()...

Skrypt i funkcja uruchamiają się po wysłaniu formularza z mailem w ten sposób:
  1. <input onclick="test();" name="wyslij" style="cursor: pointer;" class="wyslij" type="submit" value="Wyślij" />


Dodam jeszcze że wynik jest zapisany w zmiennej prog. Np. alert(prog); zwraca poprawny wynik

Z góry dzięki za pomoc i wyrozumiałość...

Ten post edytował bagsiur 15.08.2011, 10:47:23
Go to the top of the page
+Quote Post
#luq
post 15.08.2011, 11:04:15
Post #2





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

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


Nie rozumiesz idei asynchroniczności, operacji na zdarzeniach...
Masz return w zdarzeniu readystatechange pomyśl dlaczego nie działa.


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
krowal
post 15.08.2011, 11:07:45
Post #3





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

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


onreadystatechange jest wywoływane przy pewnym zdarzeniu i jest to robione automatycznie, nie wywołasz tego ręcznie a co za tym idzie nie otrzymasz zwracanej wartości, ta funkcja nie powinna nic zwracać bo wyniku nie da się przechwycić. Jeśli chcesz tą wartość gdzieś zapisać to musisz to zrobić wewnątrz tej funkcji. Nie wiem czy wiesz co to jest zasięg zmiennych itp. możesz zrobić tak:
[JAVASCRIPT] pobierz, plaintext
  1. var XMLHttpRequestObject_postep = false;
  2.  
  3. if (window.XMLHttpRequest){
  4. XMLHttpRequestObject_postep = new XMLHttpRequest();
  5. }
  6. else if (window.ActiveXObject){
  7. XMLHttpRequestObject_postep = new ActiveXObject("Microsoft.XMLHTTP");
  8. }
  9. var prog = null;
  10. function postep(){
  11. if(XMLHttpRequestObject_postep){
  12. XMLHttpRequestObject_postep.open("GET", "postep.php");
  13. XMLHttpRequestObject_postep.onreadystatechange = function(){
  14. if(XMLHttpRequestObject_postep.readyState==4 && XMLHttpRequestObject_postep.status == 200){
  15. prog = parseInt(XMLHttpRequestObject_postep.responseText);
  16. }
  17. }
  18. XMLHttpRequestObject_postep.send(null);
  19. }
  20. }
[JAVASCRIPT] pobierz, plaintext


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 06:21