Spuštění PHP funkce při kliknutí na tlačítko – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Spuštění PHP funkce při kliknutí na tlačítko – JavaScript, AJAX, jQuery – Fórum – Programujte.comSpuštění PHP funkce při kliknutí na tlačítko – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Stirl021
~ Anonymní uživatel
6 příspěvků
30. 10. 2014   #1
-
0
-

V PHP mám ve třídě Download definovanou metodu downloadFile(), která pomocí funkce file_get_contents() stáhne z webu obsah stránky a uloží ho na disk jako soubor.

class Download {

    static private function downloadFile() {

        $content = file_get_contents('http://www.adresa.cz/page.html');
        $file = file_put_contents('file.txt', $content);
    }
}

V HTML stránce mám tlačítko a chci, aby po se po kliknutí na tlačítko spustila funkce downloadFile(), tzn. aby se zaktualizoval soubor file.txt.

<button id="downloadFile">Aktualizovat</button>

Jak jsem zjistil, není možné spustit funkci v PHP JavaScriptem, to je celkem jasné. Musím použít jQuery. Tím se taky funkce PHP nespustí, ale je možné vytvořit požadavek a získat výsledek funkce downloadFile. Moje otázka je, jestli lze přímo soubor stáhnout funkcí downloadFile() bez reloadu stránky a jak toho dosáhnout?

Pročetl jsem spoustu rad na internetu, ale nemůžu to pochopit.
Díky
    

Nahlásit jako SPAM
IP: 109.164.76.–
Reklama
Reklama
Matěj Andrle+1
Grafoman
30. 10. 2014   #2
-
0
-

#1 Stirl021
Co to plácáš? Nemusíš použít jQuery - nýbrž AJAX - třeba takto (anebo za pomoci jQuery):

xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");

Je na to tolik návodů, že je toto téma zcela zbytečné! (AJAX = asynchronní volání serveru - tedy bez potřeby znovu načítat celou stránku)

Nahlásit jako SPAM
IP: 78.136.157.–
Stirl021
~ Anonymní uživatel
6 příspěvků
30. 10. 2014   #3
-
0
-

#2 Matěj Andrle
Aspoň něco jsem se dozvěděl. Ano, použije se AJAX prostřednictvím jQuery.

Nicméně, jak po kliku na tlačítko stáhnout a uložit soubor jsem se nedozvěděl. Přesto díky za názor, ale můj problém to neřeší.

Nahlásit jako SPAM
IP: 109.164.76.–
Matěj Andrle+1
Grafoman
30. 10. 2014   #4
-
0
-

#3 Stirl021
jQuery nepoužívám! Přesto mohu používat AJAX - tak vám to nějak asi nedocvaklo... Co na tom nechápete - že si máte přečíst manuál k AJAXu?

xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.onload = function()
{
	if(download)
		file = xmlhttp.responseText;
};

...

xmlhttp.open("POST", "ddd.php", true);
xmlhttp.send(file);

Kde posílat si můžete prostý text, binární pole, SOAP, či třeba stream - proud dat... Při každém poslání requestu na server přes AJAX dostáváte odezvu - proto je třeba filtrovat kdy je odpověď (response) soubor/stream/... - já tam dal proměnnou download - možností je mnoho - nejčastěji používám asociativní pole.

Nahlásit jako SPAM
IP: 78.136.157.–
peter
~ Anonymní uživatel
2551 příspěvků
31. 10. 2014   #5
-
0
-

Jj, proste si precist, jak funguje ajax, pripadne se podivat na nejaky live example. Google v tomhle spolehlive funguje.
Kdyz mas normalni stranku, formular, das ho odeslat, tak ti server vrati jinou stranku. Totez musis udelat s ajaxem. Musis mu pres javascript predat promene, zadat tam stranku a on ti vrati text nebo nic. Podle toho, co to php ma delat.

"lze přímo soubor stáhnout funkcí downloadFile() bez reloadu stránky"
Samozrejme. Ta ajax funkce muze, ale nemusi nic vypsat na stranku. Muze treba po skonceni vypsat hotovo a datum a cas (abys vedel, ze se to po kliku treba meni). Co se ma proves s tim, co dostane ze serveru za odpoved si prave definujes v navratove funkci. Taky musis pocitat s tim, ze prenos nejakou chvili trva.

http://peter-mlich.wz.cz/web/js/prjpw/ajax.html

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:7952:f3...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 20 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý