Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przekazywanie z AJAX do zmiennej w JS
Forum PHP.pl > Forum > XML, AJAX > AJAX
starcode
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?
batman
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
}
lord_t
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.
starcode
Dzięki batman. Tak własnie to zrobiłem smile.gif

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