Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zwraca undefined.
paxton
post 24.06.2009, 23:23:16
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 22.06.2009
Skąd: Londyn, UK

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


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.

Ten post edytował paxton 24.06.2009, 23:24:10
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
erix
post 24.06.2009, 23:47:17
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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ść.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
paxton
post 24.06.2009, 23:50:36
Post #3





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 22.06.2009
Skąd: Londyn, UK

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


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' ?
Go to the top of the page
+Quote Post
wookieb
post 25.06.2009, 07:06:30
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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);


Ten post edytował wookieb 25.06.2009, 07:07:08


--------------------
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: 14.08.2025 - 04:22