Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przekazywanie z AJAX do zmiennej w JS
starcode
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 18.06.2006

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


Witam!

Przeglądałem forum, jednak nie znalazłem odpowiedzi na moje pytanie.
Mianowicie, mam pole input, gdzie po zmianie jego wartości wykonywana jest funkcja JS.

  1. <input type="text" name="nazwa_pola" onchange="funkcja(this.value);"></input>


Funkcja w JS ma za pomocą AJAXA sprawdzić wartość generowaną przez PHP.

Kod java script:
  1. function funkcja(value){
  2. var error = '';
  3. advAJAX.get({
  4. url: "text.php?zmienna="+value,
  5. onSuccess : function(obj) { },
  6. onError : function(obj) { error = '0'; },
  7. onFinalization: function(obj) { error = obj.responseText; }
  8. });
  9.  
  10. .... <coś tam dalej się dzieje ze zmienną error>
  11. }


Problem jest w tym, że wartość zwracana przez AJAX nie jest zapisywan do zmiennej JS.
Z tego co wyczytałem to dlatego, że AJAX jest wykonywany asynchronicznie z JavąScript.

Stosując opóźnienie można to obejść - tylko, że nie bardzo coś takiego mi wychodzi.
Paradoksalnie pokazanie alertu w JS z dowolną treścią sprawia, że zmienna error ma odpowiednią wartość, ale jest to rozwiązanie prowizoryczne.

Zastosowanie pętli:

  1. while((error=='undefined' || !error || error=='') && i<1000){ i++; }


... teoretycznie działa, ale powoduje zawieszanie się przeglądarki i komunikaty o możliwości zakończenia skryptu.

Wiecie jak zrobić, aby wartość zwracana przez AJAX była zapisywana do zmiennej JAVASCRIPT?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
batman
post
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Możesz zrobić to tak:
Kod
onFinalization: function(obj) {
    error = obj.responseText;
    if(error == 'cos tam') {
        // zrob cos
    }
    else {
        // zrob cos innego
    }
}

lub tak:
Kod
onFinalization: function(obj) {
    error = obj.responseText;
    handleError(error);
}



function handleError(error) {
    // zrob cos lub cos innego w zlaeznosci od error
}
Go to the top of the page
+Quote Post
lord_t
post
Post #3





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

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


Dlaczego nie przypisujesz obj.resp.... w sekcji onSuccess? Z tego co się orientuję to tam to powinno mieć miejsce. onFinalization służy do innych celów.
Go to the top of the page
+Quote Post
starcode
post
Post #4





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 18.06.2006

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


Dzięki batman. Tak własnie to zrobiłem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

onsuccess jest wywoływane gdy polecenie ajax wykona się poprawnie
onfinalizaction zawsze gdy zostenie ono wykonane, bez znaczenia czy poprawnie czy nie.
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: 23.08.2025 - 12:26