SWiSH Forum Strona Główna SWiSH Forum
Forum użytkowników programów SWiSH

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload

Poprzedni temat «» Następny temat
przesyłanie danych metodą sendAndLoad
Autor Wiadomość
krzywy105 
Doradca


Pomógł: 1 raz
Dołączył: 09 Kwi 2011
Posty: 68
Skąd: Małopolska
Wysłany: Pon 06 Cze, 2011 16:02   przesyłanie danych metodą sendAndLoad

Witam mam problem nie wiem jak przesyłać dane metodą sendAndLoad próbuje rożnych sposobów z internetu ale jakoś nie chce działać. Tu na forum znalazłem taki przykład: PRZYKŁAD

Ale też nie wiem jak do tego podejść bo kombinuje i nie działa. Ma ktoś może jakiś najprostszy działający przykład wysłanie i odebrania danych ta metoda z pliku php?
Proszę o jakaś pomoc.


EDIT:
Uzyskałem coś takiego:
plik swi
Kod:
onSelfEvent (load) {

   var result_lv:LoadVars = new LoadVars();
       var send_lv:LoadVars = new LoadVars();
        send_lv.name = "Dane z SWI";
}

onFrame(1){
function pobierz_dane(){   
        result_lv.onLoad = function(success:Boolean) {
        if (success) {
            trace(this.dane_z_php);     
        } else {
            trace("Error connecting to server.");
        }
        };   
        send_lv.sendAndLoad("http://localhost/~swish/test3.php", result_lv, "POST"); 
    }

pobierz_dane();
}
onFrame(2){
    trace ("TEST");
    stop();   
    }


Niby coś tam przesyła i pobiera z php ale dane te sa tak jakby dostępne tylko wewnątrz funkcji. Dodatkowo wygląda że funkcja jest wykonywana na końcu bo w debugu daje taki wynik:
Kod:
TEST

Dane z PHP.Dane z SWI



Treść pliku PHP:
Kod:
<?php
    echo '&dane_z_php=Dane z PHP.'.$name ;
    ?>


[ Dodano: Pon 06 Cze, 2011 20:12 ]
No jakoś chyba doszedłem do czegoś więc wkleję może się komuś kiedyś przyda.

Zła kolejność wyników wynikała z opuźnienia serwera php a swish nie czeka z skryptem na wynik tylko wykonuje kolejne instrukcje.



Kod:
onSelfEvent (load) {

   var result_lv:LoadVars = new LoadVars();   // przygotowanie obiektu odbierającego dane
       var send_lv:LoadVars = new LoadVars();  //przygotowanie obiektu wysyłającego dane
        send_lv.name = "Dane z SWI23";   //ustawienie pola w obiekcie wysyłającym o nazwie name i wypelnienie jakąś treścia
       
}

onFrame(1){
 
        send_lv.sendAndLoad("http://localhost/~swish/test3.php", result_lv, "POST");  //wysłanie i odebranie danych z pliku test3.php (wysyła zmienne zdefiniowane w obiekcie send_lv - czyli w pliku php utworzy automatycznie zmienna name)
}                                                              //oraz odbiera zmienne zdefiniowane w pliku php tworząc je automatycznie w obiekcie result_lv
onFrame(50){
   
   trace(result_lv.dane_z_php);  //tu już tylko wyświetlamy to co pobraliśmy z php
   
   
    }


Kod najprostszy ale u mnie działa. Pominąłem funkcje sprawdzające nawiązanie połączenia itp. aby nie zaciemniać



Plik test3.php
Kod:
<?php
    echo '&dane_z_php=Dane z PHP2.'.$name ; //definiuje zmienna dane_z_php którą w swishu pobierzemy do obiektu result_lv i dodaje za nia string zmiennej name pobranej z swisha
    ?>

Tu też pominąłem definicje metody pobierania zmiennych tylko najprostszy działający kod.

Mam nadzieje że komuś pomoże. Zaznaczam że może tu być błędy bo dopiero się uczę swisha/php ale w każdym razie kod działa.
 
     
eden
Ekspert


Pomógł: 35 razy
Dołączył: 04 Sty 2008
Posty: 265
Skąd: warsaw
Wysłany: Wto 07 Cze, 2011 19:26   

Ułatw sobie życie i zastosuj funkcje callbackowe do Twojego obiektu. Nie są to żadne opóźnienia PHP. Jest to po prostu operacja asynchroniczna.

Dlatego możemy zdefiniować funkcje dla obiektu, które zostaną odpalone w odpowiedniej chwili automatycznie.


Odpali się wtedy kiedy dane zostaną załadowane poprawnie lub niepoprawnie. (Ty założyłeś, że dane będą gotowe w klatce 50)
Kod:
result_lv.onLoad = function(success){ ... }
 
     
krzywy105 
Doradca


Pomógł: 1 raz
Dołączył: 09 Kwi 2011
Posty: 68
Skąd: Małopolska
Wysłany: Sro 08 Cze, 2011 07:36   

Właśnie stosowałem taka funkcje:
Kod:
onClick(){
function pobierz_dane(){   
        result_lv.onLoad = function(success:Boolean) {
        if (success) {
             wynik = this.wynik;   
        } else {
            trace("Blad polaczenia z serwerem.");
        }
        };   
        send_lv.sendAndLoad("http://localhost/~szat3/contact.php", result_lv, "POST"); 
    }

pobierz_dane();
}



Funkcja pobierająca dane jest na onClick przycisku i dalej następuje przejście do sceny gdzie pobrane dane maja być wyświetlane. Jednak gdy nie odczekam trochę czasu to dane się nie pobierają, swish na nic nie czeka tylko przechodzi do sceny i tam wyświetla "undefined".
Szczerze to nie znam się na tym jeszcze zbyt dobrze więc jak masz jakąś radę lub możesz wytłumaczyć łopatologicznie co zrobić żeby mieć pewność że dane s PHP zostaną odebrane to będe wdzięczny.
 
     
eden
Ekspert


Pomógł: 35 razy
Dołączył: 04 Sty 2008
Posty: 265
Skąd: warsaw
Wysłany: Czw 09 Cze, 2011 01:35   

Niewiem po co ci nastepna scena, ale skoro juz koniecznie musisz to przejście do niej powinno być także w tej funkcji.

Cytat:
onClick(){
function pobierz_dane(){
result_lv.onLoad = function(success:Boolean) {
if (success) {
wynik = this.wynik;
// TUTAJ POWINNO BYC PRZEJŚCIE
} else {
trace("Blad polaczenia z serwerem.");
}
};
send_lv.sendAndLoad("http://localhost/~szat3/contact.php", result_lv, "POST");
}

pobierz_dane();
}
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  


Powered by phpBB modified by Przemo © 2003 phpBB Group
Nowe zasady dotyczące cookies. Wykorzystujemy pliki cookies, aby nasz serwis lepiej spełniał Państwa oczekiwania. Można zablokować zapisywanie cookies, zmieniając ustawienia przeglądarki.
         
Strona wygenerowana w 0.1 sekundy. Zapytań do SQL: 11