Chciałbym, aby po kliknięciu na jakiś określony tekst została wywołana
funkcja w PHP i wykonała jakąś operację. Probowałem wywołać funkcję
"onClick" i następnie wskazać funkcję JavaScript w której miałaby być
funkcja w PHP, ale niestety nic to nie dało. Potem gdzieś znalazłem,
że można coś podobnego wywołać przy pomocy funkcji "action", ale do
tego trzeba zrobić jakiś pstryczek do którego trzeba by wywołać
funkcję onClick. Zależy mi na tym, aby po naciśnięciu zwykłego tekstu,
a nie linku czy jakiegoś guziczka, wywołała się funkcja PHP(najlepiej
umiejscowiona w innym pliku-jak to zrobić) z przekazaniem do niej
jakiegoś stringu. Funkcja ta wyświetliła by zawartość katalogu
przekazanego jako parametr.
echo "<b
onClick=\"wejdz_do_katalogu()\">".$widok_katalogu[$i]."</b>"."<br>\n";
wejdz_do_katalogu() - funkcja w JavaScript w której miała być funkcja
PHP do pokazywania zawartości jakiegoś katalogu.
$widok_katalogu[] - tablica z zawartością katalogu. Po naciśnięciu
nazwy jakiegoś katalogu z tej tablicy funkcja powyżej miałaby pokazać
zawartość tego katalogu.
Pozdrawiam
Paweł
--
Jeśli chcesz się podzielić swoją wiedzą, zajrzyj na stronę
www.wikipedia.pl
Funkcje i w ogóle cały kod PHP jest wykonywany JEDYNIE w tym krótkim
czasie pomiędzy przyjęciem zapytania HTTP przez serwer a zwróceniem
dokumentu do przeglądarki.
Potem połączenie zostaje zamknięte do czasu wysłania następnego
zapytania. Tak dzaiała server-side (tu: PHP).
Kod JavaScript jest wykonywany tylko po otrzymaniu owego dokumentu
(czyli już po zamknięciu połączenia) - aby wywołać kod PHP trzeba wysłac
kolejne zapytanie czyli np. juzer klika na link <a href="..">.
Jeśli chcesz wynik działania Pehapa przekazać do załadowanego dokumentu
- użyj AJAX. Jest to technologia słania zapytań i pobierania dokumentów
wynikowych w JavaScripcie. Pozostaje tylko obróbka wyniku takiego
zapytania i zmodyfikowanie istniejącego dokumentu HTML poprzez DOM.
http://en.wikipedia.org/wiki/Client-side
http://en.wikipedia.org/wiki/Server-side
--
pz.
JavaScript działa po stronie klienta
PHP działa po stronie serwera
w JavaScripcie możesz najwyżej wywołać skrypt z serwera, który to
prześle do klienta kod HTML.
polecam php.faq.pl
--
Pozdrawiam
Lemat
abuse z amm.net.pl: SPAM to nie zamówiona przesyłka reklamowa wysłana do
odbiorcy bez jego zgody. W przypadku Usenet to nie zachodzi - Pana sam
pobrał tę pocztę - konfigurując konto grupy w swoim komputerze, tym
samym wyrażając zgodę na odbieranie wszystkiego co tam jest.
> echo "<b
> onClick=\"wejdz_do_katalogu()\">".$widok_katalogu[$i]."</b>"."<br>\n";
>
> wejdz_do_katalogu() - funkcja w JavaScript w której miała być funkcja
> PHP do pokazywania zawartości jakiegoś katalogu.
> $widok_katalogu[] - tablica z zawartością katalogu. Po naciśnięciu nazwy
> jakiegoś katalogu z tej tablicy funkcja powyżej miałaby pokazać
> zawartość tego katalogu.
Zastanow sie po ktorej stronie dziala JavaScript a po ktorej PHP. Skoro
JS dziala po stronie przegladarki czyli klienta znaczy to ze nie ma on
zadnej interakcji z serwerem poniewaz strona zostala juz wyslana do
klienta. Wiec jesli chcesz wywolac skrypt PHP poprzez JS jedyna
mozliwosc to przeladowanie strony z odpowiednim parametrem i po wykryciu
tegoz parametru w PHP wykonanie jakiejsc funkcji.
pozdrawiam...
--
__ __ _______________________________________
|__\\ | || |_// / \\ \_// Portfolio: http://bukox.pl |
|__// |__|| | \\ \__// / \\__Total Commander: http://totalcmd.pl /
Ja bym sie nie zapedzal, mozna pokombinowac z AJAXem - to da sie calkiem
ladnie zmontowac.
--
[ Mateusz 'Mati' Papiernik, Maticomp Webdesign ]
[ http://www.maticomp.net II ma...@maticomp.net ]
[ gg#: 1815766, tlen: maticompxp, jid: as mail ]
[ One man can make a difference -- (W. Knight) ]
> Funkcje i w ogóle cały kod PHP jest wykonywany JEDYNIE w tym krótkim
> czasie pomiędzy przyjęciem zapytania HTTP przez serwer a zwróceniem
> dokumentu do przeglądarki.
W rzeczywistości działać może dłużej. Po zakończeniu generowania i
przesyłania danych może wykonać jeszcze kilka dodatkowych czyności. Ale - i
tu masz rację - nie wpłynie to w żaden sposób na zawartość przesłanych już
danych i żadne onClick nie wywoła wprost funkcji PHP.
> Potem połączenie zostaje zamknięte do czasu wysłania następnego zapytania.
> Tak dzaiała server-side (tu: PHP).
>
> Kod JavaScript jest wykonywany tylko po otrzymaniu owego dokumentu (czyli
> już po zamknięciu połączenia) -
Niekoniecznie po zamknięciu. Kod JS może działać już w trakcie przesyłania
danych i np. informować na bieżąco o postępach ładowania strony / wykonania
skryptu PHP (co wyglądać może w ten sposób, że PHP wysyła co chwilę np
<script...>document.status=('załadowano: 20%')</script>). Jest to przydatne
przy zadaniach bardzo długotrwałych, kiedy np. trzeba coś przesyłać, żeby
przeglądarka nie wygenerowała timeouta, ale nie ma do wysłania jeszcze
żadnych konkternych danych.
Ma ktos jakies pomysly ???
Najbrutalniej?
Zrób stronę z niewidoczną ramką i skieruj wynik linka do pustej ramki.
<a href="link_do_skryptu.php" target="nazwa_ramki">...
Tak to robi pewien renomowany bank w swoim systemie bankowości
elektronicznej, do automatycznego wypełniania formularza przelewu - po
podaniu numeru konta łąduje się nazwa banku.
Pewnie można też jakimś javascriptem wyrzeźbić powołanie okna w "tle",
załadowanie do niego dokumentu i zamknięcie...
Może AJAX?
O technologii AJAX niech się wypowiadają spece, ja się nie znam :)
--
Jacek Trojanski, trojacek-malpka-wp-kropka-pl
Recent projects: www.infopolis.com www.infopolis.pl
No zaden problem ja tak robilem wiele razy .. wystarczy ze skrypt zwroci
header("HTML/1.1 204") ;
--
Archiwum grupy: http://niusy.onet.pl/pl.comp.lang.php
Czy mozesz napisac cos wiecej o tej metodzie ??? bo sprawa z ukryta
ramka wydaje mis sie oczywista ale jak napisal JT "brutalna"
a akcji z "header("HTML/1.1 204") ; " mi sie nie udala
Tu nie ma wielkiej filozofii, ot zwyczajnie -nagłówek, który mówi
przeglądarce, że jest brak zawartości, więc zawartość strony pozostaje
niezmieniona.
<a href="akcja.php">Klik</a>
akcja.php
<?php
rob_cokolwiek();
header("HTML/1.1 204");
?>
--
zaj gezunt!
tomasz dot cenian at post pl
:::: :: : : http://cenian.boo.pl : : :: ::::
> Sebastian Banach napisał(a):
> >
>> Czy mozesz napisac cos wiecej o tej metodzie ??? bo sprawa z ukryta
>> ramka wydaje mis sie oczywista ale jak napisal JT "brutalna"
>>
>> a akcji z "header("HTML/1.1 204") ; " mi sie nie udala
>
> Tu nie ma wielkiej filozofii, ot zwyczajnie -nagłówek, który mówi
> przeglądarce, że jest brak zawartości, więc zawartość strony pozostaje
> niezmieniona.
>
> <a href="akcja.php">Klik</a>
>
> akcja.php
> <?php
> rob_cokolwiek();
> header("HTML/1.1 204");
> ?>
>
Ważne jest, żeby PHP nie wysłało żadnej treści razem z tym nagłowkiem.
Nawet pusta linia za ?> może spowodować, że odpowiedź będzie
nieprawidłowa, więc najlepiej dać die() zaraz po header().
--
* html {redirect-to: url(http://browsehappy.pl);}
this.author = new Geek("porneL");
pliczek HTML
==========================
<a href="null.php" onclick="show('12')"><img src="img/more.png"
border="0"></a>
pliczek null.php
==========================
<?php
$a=0;
$a ++;
header("HTML/1.1 204");
?>
po kliknieciu na obrazek dostaje pusta stronke
> ==========================
> <?php
> $a=0;
> $a ++;
> header("HTML/1.1 204");
> ?>
>
> po kliknieciu na obrazek dostaje pusta stronke
a jakie masz źródło tej pustej stronki?
Czy aby nie
<?php $a=0; $a ++; header("HTML/1.1 204"); ?>
???
nie nie taki ale taki...
<html><body></body></html>
wywal wszystkie znaki sprzed <?php, znak < ma byc pierwszym znakiem w
dokumencie. Dodaj die(); po header no i sprawdz czy serwer nie ma
wlaczonego automatycznego wysylania jakichs naglowkow itp.
>>> header("HTML/1.1 204");
LOL! I tak można do zaj.... :))
HTTP
A na końcu zastanów się co to za protokół "HTML" :)))
w pliczku null.php nie ma zadnycj spacji znakow ani niczego innego po
ani przed rozpoczeciem skryptu czyli <?php ?>
i caly czas pliczek null.php wysyla do przegladarki cos takiego
<html><body></body></html>
null.php
==========================
<?php
$a=0;
$a ++;
header("HTML/1.1 204");
die();
?>
null.php
======================
<?php
$a=0;
$a ++;
header("HTTP/1.1 204");
die();
?>
smiga az milo.
Dzieki wszytskim o to wlasnie mi chodzilo.
Nikt?
Ktoś inny za to chyba postów niezauważa...
:)
Tyz :D
> Nic. kompletnier nic moe ze byc przesylane do przegladarki .. wiec plik
> null.php nie moze nic wysylac
>
Tomaszu, te tagi sa automatycznie wstawiane w każdy pusty dokument z
typem text/html otrzymanym przez przeglądarkę. Są wstawiane przez
przeglądarkę oczywiście. Więc to nie jest wina programsity.
Zgadza sie .. w kazdy pusty dokument, ale serwer nie ma zwracac nic,
zadnego dokumentu ;) .. wiec jesli zrobic header("HTTP/1.1 204 ") ; to
serwer nie zwroci nic ;) znaczy sie zwroci TYLKO informacje ze nic znie
zwraca ;) .. przegladarka to interpretuje odpowiednio i podejmuje
kroki .. zupelnie jak w przypadku kodu 404 :) ..nie wyesietla ci pustego
dokuiemtnu tylko informacje ze nei ma strony
> Tu nie ma wielkiej filozofii, ot zwyczajnie -nagłówek, który mówi
> przeglądarce, że jest brak zawartości, więc zawartość strony pozostaje
> niezmieniona.
>
> <a href="akcja.php">Klik</a>
>
> akcja.php
> <?php
> rob_cokolwiek();
> header("HTML/1.1 204");
> ?>
>
Hmmm... wprowadziliśmy kogoś w błąd co?;-) Zdarza się;-)
Pozdrawiam
Marcin Staniszczak
Mariusz