Přihlásit se

Joomla 5.1.0 a Joomla 4.4.4 (17 dub 2024)

Dnes byla uvolněna nová verze Joomla 5.1.0, společně s Joomla 4.4.4. Tato verze přináší spoustu nových funkcí, vylepšení v oblasti bezpečnosti a kódu a díky těmto vylepšením i vyšší rychlost.

předání dat z javascript do PHP

22. zář 2015 18:53 #123532
Odpověď od Ernst
Joomla Expert
to že php pracuje na straně serveru js na straně klienta je mi jasné od počátku. právě proto, že lokaci nezjistím nikde jinde než na straně klienta musím použít js.
že se prvně zpracuje php a pak se vlastně provede ten js je mi také jasné.
znovunačtení není potřeba, protože výsledek se zobrazuje na úplně jiné stránce.

popis, co to má dělat jsem psal.

Potřebuji do již zakoupeného modulu dodat možnost zjištění svojí reálné vzdálenost od jiného objektu (který má lokaci uloženou v databázi)

Snažím se na to přijít sám, ale přečetl jsem si spoustu příkladů a manuálů (většinu jsem tady odkazoval)
jak ale mám dostat ty hodnoty do proměnných v PHP a dále s nimi pracovat.

Uvádím několik odkazů, kde to je popsáno, ale nedokážu to implementovat na tento příklad:
api.jquery.com/jquery.post/
stackoverflow.com/questions/28641438/aja...ent45582257_28641686
www.pehapko.cz/zakladni-kurz/15-php-a-javascript
a mnoho dalších

22. zář 2015 18:56 #123534
Odpověď od Cony
Moderátor

ernst napsal: Je na tohle vůbec ajax vhodný?
není lepší použít jen jQuery.post?

:lol: Zkoušel jste alespoň do dokumentace nahlédnout? Nadpisek Ajax > Shorthand Methods a hned první věta pod tabulkou pramaterů "This is a shorthand Ajax function, which is equivalent to:"

22. zář 2015 19:06 #123536
Odpověď od Cony
Moderátor
Tedy postup
1/ Uživatel otevře jakousi stránku - to spustí u Vás na Serveru PHP, ve kterém, krom jiného, vložíte do HTML javascript, který provede asynchronní volání
2/ javascript se na klientovi spustí a zavolá pomocí AJAX nějakou adresu na serveru. Ta spustí PHP skript, který zpracuje zaslané parametry a vytvoří nějaký výstup
3/ klient obdrží odpověď na svůj dotaz a odpověď zobrazí jak je libo.

Vy nehledáte příklady, ale naprosto konkrétní řešení. Nahraďte si console.log(data) za jQuery('#results').html(data); tedy javascript naprosto konkrétně
Code:
jQuery(function(){ if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { jQuery.ajax({ url: '/components/com_lovefactory/models/lokace.php', data: {lat: position.coords.latitude, lgt: position.coords.longitude} }).done(function(data){ jQuery('#results').html(data); }).fail(function(){ jQuery('#results').html('AJAX selhal'); }); }, function(error){ jQuery('#results').html(error.message); }); } });

Samozřejmě za předpokladu, že v HTML máte někde prvek s ID results, tedy něco jako <div id="results"></div> (popř si jej doplňte v kroku 1).
Poděkovali: Ernst

22. zář 2015 20:56 #123538
Odpověď od Ernst
Joomla Expert
Děkuji Vám mnohokrát, bez Vás bych to nedal.
nepředpokládal jsem, že tyhle věci budu potřebovat. Ze zadání to vypadalo, že nakonfiguruji joomlu nakonfiguruji a v css upravím love factory a doplním další moduly.
Zákazník si však vymyslel různá rozšíření v love factory, propojení modulů atd.
Troufnu si tvrdit, že joomlu css a php umím obstojně, ale OOP, asynchronní volání, js atd bylo pro mně do konce srpna španělskou vesnicí. Normálně bych to vzdal, ale chci se to naučit tak jsem skočil do vody, přestože neumím plavat.
Dříve jsem napsal podvojné účetnictví, SW pro sledování provozu telefonních ústředen, specializovaný SW pro vývoz dřeva, skladové hospodářství atd.
To ale bylo "klasické" staré programování většinou v clipperu. Z toho teď mohu obstojně vycházet v php, zvlášť kdyby ten modul nebyl napsán objektově.

Teď jdu s tím, co jste mi většinou napsal Vy experimentovat, zkoušet různé varianty, prostě si osahat, co kde jak dělá.
Tím to pochopím a mohu to aplikovat na jakýkoliv případ ajaxu a vůbec komunikace mezi PHP a JS.

Musím ještě vymyslet, jak ty hodnoty dostat do požadované funkce v tom php, kam jsem ten js přidal.
Dokonce je možná varianta, že to opravdu zapíšu do databáze, ale nepovažuji to za nejvhodnější řešení.
Musím zkusit, co se stane, když z JS zavolám to php, ze kterého jsem ho volal.

Také potřebuji, aby se ta poloha automaticky aktualizovala. Samozřejmě stačí aktualizace stránky (ta se dá udělat i automaticky) nebo do toho js doplnit něco takového: navigator.geolocation.getCurrentPosition(showLocation, errorHandler, {enableHighAccuracy:false, maximumAge:60000, timeout:27000});
Ale to nevím, jak by se chovalo.

Je mi trapné, že mi takhle pomáháte zadarmo, pokud chcete nějaké peníze, napište mi.

22. zář 2015 21:36 #123539
Odpověď od Cony
Moderátor

ernst napsal: zvlášť kdyby ten modul nebyl napsán objektově.

No jo, ale objektově se programuje už minimálně 20 let :) Už od dob prvních C++ nebo Delphi. V PHP byly objekty od verze 3, z roku 1998. Bez objektového programování se dnes obejdete snad jen v makrech v excelu :)

22. zář 2015 22:33 #123540
Odpověď od Ernst
Joomla Expert
No jo, ale já svý první programy napsal cca v roce 1985. :)

Powered by Fórum