Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Wywołanie funkcji PHP w skrypcie JavaScript

754 views
Skip to first unread message

Paweł

unread,
Nov 29, 2005, 5:36:31 PM11/29/05
to
Witam wszystkich

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

faxe

unread,
Nov 29, 2005, 6:08:07 PM11/29/05
to
Paweł napisał(a):
> Witam wszystkich

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.

Lemat

unread,
Nov 29, 2005, 6:04:53 PM11/29/05
to
Paweł napisał(a):

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.

[BuKoX]

unread,
Nov 29, 2005, 6:12:42 PM11/29/05
to
Paweł napisał(a):

> 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 /

Mateusz Papiernik

unread,
Nov 30, 2005, 1:32:56 AM11/30/05
to
[BuKoX] napisał(a):

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

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

Tomator

unread,
Nov 30, 2005, 3:06:07 AM11/30/05
to
Użytkownik "faxe":

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

Sebastian Banach

unread,
Nov 30, 2005, 7:08:33 AM11/30/05
to
A ja mam podobne pytanko z tym ze potrzebuje wywolac funkcje php ale nie
potrzebuje zmieniac istniejacego dokumentu HTML, znaczy ze po kliknieciu
w cos tam na stronce "onclick" ma sie wywolac jakis skrypt na serverku
ale zadne informacje nie musza trafic do przegladarki (stronka nie ma
sie przeladowac)

Ma ktos jakies pomysly ???

JT

unread,
Nov 30, 2005, 7:19:32 AM11/30/05
to

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

Tomasz S.

unread,
Nov 30, 2005, 7:15:46 AM11/30/05
to
Dnia 30-11-2005, śro o godzinie 13:08 +0100, Sebastian Banach napisał
(a):

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

Sebastian Banach

unread,
Nov 30, 2005, 7:41:55 AM11/30/05
to
Tomasz S. 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

Tomasz Cenian

unread,
Nov 30, 2005, 7:49:37 AM11/30/05
to
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");
?>


--
zaj gezunt!
tomasz dot cenian at post pl
:::: :: : : http://cenian.boo.pl : : :: ::::

porneL

unread,
Nov 30, 2005, 7:56:12 AM11/30/05
to
On Wed, 30 Nov 2005 12:49:37 -0000, Tomasz Cenian <a...@bb.cc.dd> wrote:

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

Sebastian Banach

unread,
Nov 30, 2005, 8:00:42 AM11/30/05
to
Niby masz racje. Tak tez zrozumialem i wydalo mi sie to oczywiste ale po
wprowadzeniu w zycie czyli.....

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

Tomasz Cenian

unread,
Nov 30, 2005, 8:14:03 AM11/30/05
to
Sebastian Banach napisał(a):

> ==========================
> <?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"); ?>

???

Sebastian Banach

unread,
Nov 30, 2005, 8:16:10 AM11/30/05
to
Tomasz Cenian napisał(a):

> Sebastian Banach napisał(a):
>
>
>>==========================
>><?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>

Alianora

unread,
Nov 30, 2005, 8:19:54 AM11/30/05
to
Sebastian Banach napisał(a):

>
> pliczek null.php
> ==========================
> <?php
> $a=0;
> $a ++;
> header("HTML/1.1 204");
> ?>
>
> po kliknieciu na obrazek dostaje pusta stronke

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.

Tomasz S.

unread,
Nov 30, 2005, 8:18:33 AM11/30/05
to
Dnia 30-11-2005, śro o godzinie 14:16 +0100, Sebastian Banach napisał
(a):
Nic. kompletnier nic moe ze byc przesylane do przegladarki .. wiec plik
null.php nie moze nic wysylac

Tomasz Cenian

unread,
Nov 30, 2005, 8:24:32 AM11/30/05
to
Sebastian Banach napisał(a)

>>> header("HTML/1.1 204");

LOL! I tak można do zaj.... :))

HTTP

Tomasz Cenian

unread,
Nov 30, 2005, 8:26:03 AM11/30/05
to
Alianora napisał(a):

A na końcu zastanów się co to za protokół "HTML" :)))

Sebastian Banach

unread,
Nov 30, 2005, 8:36:24 AM11/30/05
to
Tomasz S. napisał(a):

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

Sebastian Banach

unread,
Nov 30, 2005, 8:48:34 AM11/30/05
to
Hehehe wszyscy czytaja robia ctrl-c ctrl-v a nikt niezauwazyl HTML heheh
dobre
No ale nic skrypt null.php w wersji

null.php


======================
<?php
$a=0;
$a ++;

header("HTTP/1.1 204");
die();
?>

smiga az milo.
Dzieki wszytskim o to wlasnie mi chodzilo.

Tomasz Cenian

unread,
Nov 30, 2005, 8:51:33 AM11/30/05
to
Sebastian Banach napisał(a):

> Hehehe wszyscy czytaja robia ctrl-c ctrl-v a nikt niezauwazyl HTML heheh
> dobre

Nikt?
Ktoś inny za to chyba postów niezauważa...
:)

Alianora

unread,
Nov 30, 2005, 9:51:58 AM11/30/05
to
Tomasz Cenian napisał(a):

> A na końcu zastanów się co to za protokół "HTML" :)))

Tyz :D

faxe

unread,
Nov 30, 2005, 10:14:35 AM11/30/05
to
Tomasz S. napisał(a):

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

Tomasz S.

unread,
Nov 30, 2005, 10:23:56 AM11/30/05
to

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

Marcin Staniszczak

unread,
Nov 30, 2005, 4:13:47 PM11/30/05
to
>>
>>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.
>
>
> A na końcu zastanów się co to za protokół "HTML" :)))
>
>
A Ty zobacz swój post z 13:49. Że Cię zacytuje:


> 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

Message has been deleted

kiliuszkin

unread,
Nov 30, 2005, 4:47:44 PM11/30/05
to
Pytanie w podobnym stylu. Mam kilka formularzy w html i jeden z nich
służy do pobrania pliku z dysku lokalnego i wykonanie uploadu na
serwer. W zdarzeniu onsubmit wywołuję funkcję validacji poprawności
danych w JS. Mam napisaną funkcję w php z alertami w JS, która
uploaduje plik na serwer (funkcja działa). Jak najlepiej obsłużyć
zdarzenie onsubmit by przeprowadzić walidację poprawności danych w
JS i jednocześnie przesłać plik na serwer nie przeładowując strony
html, z uwagi na zapamiętywanie wcześniej wprowadzonych danych. Czy
powyżej metoda opisana w moim przypadku się sprawdzi ?

Mariusz

0 new messages