![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 16.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Na stronie mam taki kod:
Po kliknięciu przycisku submit wykonywany jest skrypt przy użyciu Ajaxu, a wynik działania skryptu jest wsypywany do <div id="odp">. Ten wykonywany skrypt (nazwijmy go skrypt A) odpala jakiś inny skrypt (nazwijmy go skrypt B ) funkcją eval(), ale chciałbym, żeby ten skrypt B mógł wykorzystywać funkcję read($zmienna), która kończyłaby działanie skryptu w tym momencie, gdzie została wywołana, czekała aż użytkownik wpiszę coś w textarea i naciśnie przycisk, przypisawałaby do zmiennej podanej jako argument wartość wpisaną w textarea i dopiero po tym dokańczałaby działanie tamtego odpalanego skryptu od momentu, w którym było wywołanie funkcji read(). Chodzi mi po prostu o coś takiego jak funkcja read() w Pascalu czy scanf() w C, ale chcę coś takiego napisać w PHP pobierając ten wczytywany tekst z textarea. Czy da się coś takiego zrobić, albo chociaż coś podobnego do tego? Mój pomysł jest taki, żeby podzielić cały skrypt B na kawałki między wywołania tej funkcji read():
I później wykonujemy pierwszą część kodu i to, która część kodu jest wykonywana jest przechowywane w sesjach, podobnie przechowywane w sesjach byłyby wartości wszystkich zmiennych, ale musiałbym także oprócz zmiennych przechowywać w tych sesjach jeszcze na przykład definicje wszystkich funkcji, klas itd. Czy istnieje lepsze rozwiązanie? -------------------- WIELKIE DZIĘKI ZA POMOC!
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
O panie, elementarne podstawy protokołu HTTP się kłaniają. Klient wysyła żądanie, serwer odsyła odpowiedź. Tak wygląda komunikacja w obrębie pojedynczego żądania. Najczęściej, gdy przeglądarka zaczyna odbierać kod HTML, skrypt PHP już jest przeszłością. Oczywiście można wymusić, by dane wysyłać wcześniej, ale niewiele Ci to da, bo komunikacja jest jednokierunkowa w obrębie żądania. Taką funkcję masz, ale jak piszesz skrypt PHP wykonywany na konsoli, natomiast przez sieć i HTTP - nie da rady. Co najwyżej możesz Ajaksem wysłać kolejne żądanie HTTP do kolejnego skryptu, że coś zostało tam wpisane.
-------------------- Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 16.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Cytat O panie, elementarne podstawy protokołu HTTP się kłaniają. Klient wysyła żądanie, serwer odsyła odpowiedź. Tak wygląda komunikacja w obrębie pojedynczego żądania. Najczęściej, gdy przeglądarka zaczyna odbierać kod HTML, skrypt PHP już jest przeszłością. Wiem o tym doskonale, chyba nie zrozumiałeś, o co mi chodzi. Przeczytaj mój post jeszcze raz. Dlatego właśnie nie wykonuję skryptu B w normalny sposób, tylko evalem, żeby móc przedtem go "nadzorować" skryptem A. Skrypt B wykonuje się fragmentami i wiem, że nie da się wykonać tego wszystkiego za jednym żądaniem. Chciałbym żeby było tak, że użytkownik coś wpisuje, później skrypt B jest wykonywany do momentu wywołania read() i wtedy serwer odsyła odpowiedź, ale wartości wszystkich zmiennych, definicje funkcji itd. zapisuję w sesjach, ale trudno jest to wszystko skryptem A wyciągnąć ze skryptu B, dlatego pytam się, czy ktoś ma lepszy pomysł chociaż raczej inaczej nie da się tego zrobić. Ten post edytował Capellini 28.07.2009, 13:54:09 -------------------- WIELKIE DZIĘKI ZA POMOC!
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Chodzi mi po prostu o coś takiego jak funkcja read() w Pascalu czy scanf() w C, ale chcę coś takiego napisać w PHP pobierając ten wczytywany tekst z textarea. Czy da się coś takiego zrobić, albo chociaż coś podobnego do tego? Widać, kto zaglądał do dokumentacji: sscanf" title="Zobacz w manualu PHP" target="_manual -------------------- ![]() 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! |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
Hmmm... faktycznie, teraz to brzmi trochę sensowniej - trochę to zakręcone było w pierwszy poście, ale mniejsza z tym, ważne że teraz już mam jasność
![]() 1. Skrypt A generuje kod do wyświetlenia formularza. KONIEC. Nie ma żadnego nadzoru nad innym skryptem, ani nic. Skrypt miał wygenerować formularz i go wygenerował. 2. Przeglądarka czeka na wpisanie czegoś. Gdy to się stanie, wysyła AJAX-em kolejne żądanie do skryptu B. 3. Skrypt B startuje całkowicie normalnie, identycznie jak skrypt A, tyle że po drodze określa, że chcemy od niego danych AJAX-owych. Generuje je więc i kończy pracę. 4. Użytkownik wciska przycisk wysłania formularza i na serwerze rozpoczyna się wtedy wykonywanie skryptu C. 5. Skrypt C znowu ładuje się normalnie i widzi, że musi przetworzyć jakiś formularz. Wobec tego przetwarza go i odsyła do przeglądarki odpowiedź. Po prostu musisz zacząć myśleć właśnie w taki sposób, że wyświetlenie formularza i jego przetworzenie to dwa oddzielne procesy, w których dzieje się zupełnie co innego. Znacznie szybciej do czegoś dojdziesz, niż tracąc czas na eksperymenty z próbą zasymulowania funkcji read(). Ten post edytował Zyx 28.07.2009, 14:40:48 -------------------- Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 04:54 |