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

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0