Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zwraca undefined.
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
paxton
Witam, posiadam o to taka funkcje:

  1. function onMove(to) {
  2. $.ajax({
  3. type: "POST", url: "walkable.php", data: "move=" + to,
  4. complete: function(data){
  5. var data = data.responseText;
  6. return data;
  7.  
  8.  
  9. }
  10. });
  11.  
  12. }


Plik walkable.php zawsze coś zwraca wiec nie ma z tym problemu, w tym problem ze sama funkcja zwraca undefined.

Sprawdzam to poprzez alert(onMove("left"));

Co tu może być źle? Przeszukałem cale google, lecz nic nie znalazłem.
erix
Nie zwróci Ci w ten sposób.
Kod
complete: function(data){
var data = data.responseText;
return data;

Zwraca tylko dla obiektu wywołującego funkcję, czyli obiektu $.ajax.

Aby przechwycić wartość, utwórz w głównej funkcji jakąś zmienną (o innej nazwie niż data) i przypisuj jej żądany argument.

Po wykonaniu AJAX możesz zwrócić tę wartość. Ale pamiętaj, aby włączyć żądanie synchroniczne, gdyż zawsze będzie miało pustą wartość.
paxton
Cytat(erix @ 24.06.2009, 23:47:17 ) *
Nie zwróci Ci w ten sposób.
Kod
complete: function(data){
var data = data.responseText;
return data;

Zwraca tylko dla obiektu wywołującego funkcję, czyli obiektu $.ajax.

Aby przechwycić wartość, utwórz w głównej funkcji jakąś zmienną (o innej nazwie niż data) i przypisuj jej żądany argument.

Po wykonaniu AJAX możesz zwrócić tę wartość. Ale pamiętaj, aby włączyć żądanie synchroniczne, gdyż zawsze będzie miało pustą wartość.


Nie zbyt rozumiem, mógłbyś to wytłumaczyć na 'chłopski rozum' ?
wookieb
Tzn, że nie dostaniesz wyniku działania funkcji complete jeżeli walniesz w niej return.
Zeby to obejsc musisz wywoływac ajaxa w sposób synchroniczny (zapraszam do manuala jquery) i wtedy bedziesz mogl odebrac dane. Poniewaz sposób synchroniczny blokuje przegladarke na czas ładowania, wiec nie warto z nie korzystac dlatego po prostu zamiast zwracac wartość wywołuj inną funkcje, która ma robić coś po odebraniu danych ajax i w jej parametrze przekaz odebrane dane.
  1. funkcja(data);
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.