Autor | Zpráva | ||
---|---|---|---|
bazz Profil |
Už jsem prošel x stránek a prostě mi to hlava nebere... potřeboval bych předat proměnou "position.coords.latitude" z tohodle kodu do proměnné v php, prosím pomoc. Asi k tomu je fce AJAX ale nejde mi to, děkuji mnohokrát
<script> var x = document.getElementById("demo"); function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } else { x.innerHTML = "Geolocation is not supported by this browser."; } } function showPosition(position) { x.innerHTML = "Latitude: " + position.coords.latitude + "<br>Longitude: " + position.coords.longitude; } </script> když si ji vypíšu jako alert tak mi to zobrazí toto: [object HTMLParagraphElement] když si ji zobrazím x.innerHTML = position.coords.latitude; tak je to číslo... jak toto číslo dostanu do proměnné v php? |
||
Tomášeek Profil |
#2 · Zasláno: 14. 1. 2020, 20:26:54
bazz:
„když si ji vypíšu jako alert tak mi to zobrazí toto: [object HTMLParagraphElement]“ Evidentně vypisuješ celý element (odstavec), ne jen tu číselnou proměnnou. Předání proměnné na server, pokud stačí po refreshi, na další stránce, atd., tak třeba formulářem, parametrem v URL, ... Druhá možnost je AJAX (opravdu to není funkce), který ti umožní tu hodnotu poslat na server hned po loadu stránce, resp. zpracování toho JS, ale toho tu nevidím ani náznak. Cos dosud zkoušel a nefungovalo ti? |
||
bazz Profil |
když si dám vypsat alert x.innerHTML = position.coords.latitude; tak mi to číso ukáže ale nevím jak tenhle udaj uložit do proměnné php
ten ajax je určitě řešení bohuž prostě nevím jak na to... mohl by prosím někdo napsat ty tři řádky které to odešlou? ideálně s vysvětlivkama :-D |
||
Tomášeek Profil |
#4 · Zasláno: 14. 1. 2020, 20:47:41
bazz:
„když si dám vypsat alert x.innerHTML = position.coords.latitude; tak mi to číso ukáže“ Ano, předtím jsi měl zřejmě alert(x) .
„mohl by prosím někdo napsat ty tři řádky které to odešlou?“ Ne. Trochu se snaž. Pokud budeš mít kód, který z nějakého důvodu nebude fungovat, vrať se s ním a podíváme se na něj. Nejprve ale projev trochu vlastní iniciativy. |
||
bazz Profil |
#5 · Zasláno: 14. 1. 2020, 21:33:01
Tomášeek:
tomu rozumím že se mám snažit :-D tak začněme prosím od píky... tady je kod který jsem našel na webu v návodu jak převest proměnnou z JS do PHP: <script> function zkouska(){ var promena=”Toto je pokusný text”; document.write (promena + ” vložený do PHP”); } </script> Do PHP můžeme javascriptový kód vložit jednoduše tín, že v PHP vyůíšeme javascriptový kód vypsat: <?php echo “<script>zkouska(); </script>”; ?> a ni tohle nefunguje... tak od čeho se mám odpíchnout když už ani návody nefungují :-D |
||
Keeehi Profil |
#6 · Zasláno: 14. 1. 2020, 21:45:16
bazz:
Ne, to je obrácený směr. Jak něco dostat z PHP do JS. Dobrý studijní materiál bude AJAX. Na konci tam jsou popsané i metody, jak dostat informaci na server jinak než AJAXem. |
||
Radek9 Profil |
#7 · Zasláno: 14. 1. 2020, 21:56:49
bazz:
Důležité je uvědomit si, v jakém pořadí se jednotlivé části kódu provádí. Nejdříve webserver (Apache) spustí PHP script a ten vygeneruje výslednou HTML stránku. Ta je skrze HTTP poslána klientovi. V tuto chvíli končí jakékoli provádění na serveru. Následně se u klienta vyrenderuje stránka a spustí JS. Pokud čekáš, že z JS, které běží u klienta, ovlivníš proměnnou v PHP scriptu, jehož běh už dávno skončil, tak pro tebe mám špatnou zprávu: logicky to nejde. Vysvětlené je to i tady: Základní kurz 15: Komunikace mezi PHP a JavaScriptem Musíš použít např. zmíněný AJAX (v současné době to jde docela jednoduše pomocí Fetch API). A věz, že na aktuálně stažené stránce se to již nijak neprojeví, neprovedeš-li změny pomocí JS po odpovědi ze serveru. |
||
bazz Profil |
#8 · Zasláno: 15. 1. 2020, 22:34:55
dobře tak to zkusme rozebrat. Pokud tomu dobře rozumím tak tahle funkce by pro mě mohla být ta pravá:
function odeslani() { var neco = "nějaky obsah" ; xmlhttp.open("POST", "vypocet.php", true); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send("param1="+neco); } a toto bych měl dostat sem do souboru vypocet.php: <?php $neco = $_POST["param1"]; ?> je to v pořádku? |
||
blaaablaaa Profil |
#9 · Zasláno: 16. 1. 2020, 08:19:48
bazz:
Neptej se a vyzkoušej to, ne? Prohlížeče mají dost ladících nástrojů, abys pak dokázal zjistit, kdyby bylo něco špatně. |
||
Radek9 Profil |
#10 · Zasláno: 16. 1. 2020, 09:01:32
bazz:
„tahle funkce by pro mě mohla být ta pravá“ Chybí ti definice toho xmlhttp . Buď to udělej pořádně, nebo použij fetch (podpora je akceptovatelná).
function odeslani() { var neco = 'nějaký obsah'; fetch('vypocet.php', { method: 'POST', headers: { 'content-type': 'application/x-www-form-urlencoded' }, body: 'param1=' + encodeURIComponent(neco) }); } „a toto bych měl dostat sem do souboru vypocet.php“ Ano. Ale uvědom si, že se to provádí v pozadí. Pokud ti jde např. jen o to něco uložit (třeba ty souřadnice), tak asi nic víc nepotřebuješ. Pokud chceš vrátit nějakou zprávu, musíš to ještě pořešit v tom JS scriptu: vypocet.php: <?php $neco = $_POST["param1"]; echo "Result: " . $neco; // tímhle způsobem něco vypíšeš do stránky, kterou načítá JS JS kód: function odeslani() { var neco = 'nějaký obsah'; fetch('vypocet.php', { method: 'POST', headers: { 'content-type': 'application/x-www-form-urlencoded' }, body: 'param1=' + encodeURIComponent(neco) }) .then(function (res) { return res.text(); }) .then(function (text) { document.getElementById('result').innerHTML = text; // v proměnné text je výpis ze stránky vypocet.php }); } |
||
Časová prodleva: 2 roky
|
0