předání dat z javascript do PHP

Odpověď od Ernst
21. zář 2015 14:16 #123497
Já Vám strašně moc děkuji, že si mi takto věnujete. Hodně jste mně toho naučil.
ten sled funkcí se mi taky nezdál, ale fungovalo to. Dokonce jsem měl hned na začátku nadefinovány ty dvě proměnné, ale nebylo to třeba. Vysvětlit to samozřejmě neumím ani nepotřebuji.
To "a" jsem tam měl jen proto, že jsem zatím neuměl odeslat zpět dvě proměnný, tak jsem si výsledek v php rozdělil pomocí toho "a" na dvě proměnný.
Pomocí toho v php
$document = &JFactory::getDocument();
$document->addScript('/components/com_lovefactory/js/lokace.js');
se mi javascript odešle (do console vypíše odesláno), Jak to vlastně funguje mi není zcela jasné, ale beru to jako fakt a později se to doučim.
ale v tom lokace php to asi nemohu přečíst jako $_REQUEST ale musím použít $_GET?
Studoval jsem to na mnoha webech, nejnověji na jaknajquery.cz/ajax-a-jquery/ a www.koding.cz/priklady.php?id=26

Samozřejně bych raději upravil tu komponentu (z ní to volám) ale přijímám v jiném PHP, ale zatím to neumím.
Jde o stránku, kde zobrazuji uživatele a potřebuji vypsat vzdálenost od mé aktuální pozice.
Takže tu stránku (funkci) musím nějak znovu zavolat s parametry, které jsem získal z JS.
Nebo ten JS volat o něco dřív a použít Vámi nenáviděnou globální proměnnou s mojí geolokací. To by také teoreticky šlo?

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
21. zář 2015 16:11 #123498
Někde je chyba a nevím kde
lokace.js:
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(){
console.log('Odeslano');
}).fail(function(){
console.log('Odeslání selhalo');
});
}, function(error){
console.log('Zjitění souřadnic selhalo');
console.log(error.message);
});
}
});

ale to lokace.php se nezavolá

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
22. zář 2015 09:41 #123505
Tedy ono se zavolá:
GET http://localhost/components/com_lovefactory/models/lokace.php?lat=50.0373925&lgt=14.309066399999999
ale v lokace php se mi nic neděje.
Poslané hodnoty nemohu zobrazit (třeba var_dump()) a když v tom lokace.php udělám úmyslně chybu syntaxe žádná chyba se nevypíše.
Prostě to vypadá, jako by to php neproběhlo.
Celé to lokace php jsem napsal jen:
<?php $lat = $_GET["lat"]; $lon = $_GET["lgt"];
var_dump($lat); var_dump($lat);?>

Ale nic se nevypíše. Kde prosím dělám chybu?

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
22. zář 2015 09:44 #123506
A kde jako čekáte, že se Vám to vypíše? Kontroloval jste v konzoli výsledek AJAX dotazu?

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
22. zář 2015 09:54 - 22. zář 2015 09:58 #123507
ano kontroloval, vše OK
Myslím, že by se to mělo vypsat v tom PHP

PS Pokud do js přidám alert, tak to také vypíše správně

Možná jsme se trefili do stejného času a nečetl jste moji poslední odpověď

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
22. zář 2015 12:09 #123508

ernst napsal: ano kontroloval, vše OK
Myslím, že by se to mělo vypsat v tom PHP

Tak schválně, za domácí úkol se zkuste nad tím zamyslet, co to znamená to "vypsat v tom PHP", kde hledat to co si "vypíšte v tom PHP". (malá nápověda AJAX = Asynchronous Javascript And Xml).

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
22. zář 2015 13:08 - 22. zář 2015 13:14 #123509
myslím v tom php co volám z JS, tedy lokace.php ne v tom odkud to volám.
Kde jinde bych si ty hodnoty měl přečíst?

V té mé předchozí variantě, kde jsem testoval ty pole a tlačítko se mi to v tom vypsalo a mohl jsem s tím pracovat.
Já přeci to lokace.php volám s těmi parametry, tak bych to tam měl mít a mít možnost s tím pracovat.

ten ajax v JS přeci zavolá http://localhost/components/com_lovefactory/models/lokace.php?lat=50.0373925&lgt=14.309066399999999

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od karel
22. zář 2015 13:31 - 22. zář 2015 13:38 #123510
zkusím napovědět více:

ajax v JS přeci zavolá http://localhost/components/com_lovefactory/models/lokace.php?lat=50.0373925&lgt=14.309066399999999

, ano správně, ... a webový server provede, to co je v souboru definováno, ale je komu (jak) odpovědět? Kam/jak se má výsledek odeslat/zobrazit? Kdo vlastně ten soubor ze serveru požadoval a jak? (Vy to víte, já to vím, ale ví o tom prohlížeč, server ?)
Proč ten AJAX je vlastně asynchronní?
Co to je to asynchronní?

Jaký je rozdíl mezi zavoláním stejné URL: http://localhost/components/com_lovefactory/models/lokace.php?lat=50.0373925&lgt=14.309066399999999
- prohlížečem ?
- JS ?

Znáte-li řešení, sdělte ho - pomůžete ostatním při řešení stejného problému, i případný "rádce" bude vědět, poradil-li správně nebo špatně.
Poděkovali: Ernst

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od karel
22. zář 2015 13:47 #123511
Celý příklad i se zobrazením výsledku v jQuery:
api.jquery.com/jquery.post/

Znáte-li řešení, sdělte ho - pomůžete ostatním při řešení stejného problému, i případný "rádce" bude vědět, poradil-li správně nebo špatně.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
22. zář 2015 14:56 #123515
zkusím odzadu
Když napíšu do prohlížeče http://localhost/components/com_lovefactory/models/lokace.php?lat=50.0373925&lgt=14.309066399999999 tak mi var_dump ty hodnoty v php vypíše.
Když to zavolá ajax z JS neděje se nic. Proč to nevím.

Já se to snažil pochopit dle jquery-navod.cz/kategorie-ajax/9-ajax a jaknajquery.cz/ajax-a-jquery/
ten příklad, co jste mi poslal Vy nějak nechápu.

Když jsem zkoušel ten pokus se zadáním jména (příspěvek z 20.9. 22:52) tak jsem v tom lokace.php mohl s proměnnými pracovat a chápal jsem, jak to je.
Tenhle způsob tedy nějak nejsem schopen pochopit

Kde co blbě chápu? jak to tedy mám udělat?

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
22. zář 2015 15:11 #123518

ernst napsal: Kde co blbě chápu? jak to tedy mám udělat?

Blbě chápete celý princip fungování Javascript, AJAX, PHP atd..
Jak to máte udělat? A co vlastně chcete? Chcete uživateli vypsat jeho GPS souřadnice? Pokud vím tak ne. Vy je chcete přeci uložit do databáze. Tak proč probůh řešíte, že se Vám nikde nevypisujou, prostě je uložte do databáze a pak se na ně můžete dívat v databázi.
Pokud chcete uživateli ukazovat zpětnou vazbu o tom, že se informace uložila (ale to asi ne, nebudete nikomu přeci říkat jak ho šmírujete), tak to musíte pořešit ve funkci done toho javascriptu co jsem psal.
...
			}).done(function(data){
				console.log('Odesláno');
				console.log('Odpověďd');
				console.log(data);
			}).fail(function(){
...

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
22. zář 2015 15:18 #123520
ne já je nepotřebuji uložit do databáze.
potřebuji je dostat do php (jako aktuální pozici) a v tom spočítat vzdálenost od jiných souřadnic. To vše v php již umím.
Vypisovat je nikde nechci, to var_dump() si tam dávám jen pro ladění, v podstatě abych věděl, kde co mám.
To znamená potřebuji souřadnice dostat do proměnných v php

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od karel
22. zář 2015 15:24 - 22. zář 2015 15:26 #123521
aneb:
Když vložíte http://localhost/components/com_lovefactory/models/lokace.php?lat=50.0373925&lgt=14.309066399999999 :
-- do prohlížeče, tak Vám zobrazí odpověď automaticky (na to je stavěný: něco požadujete ze serveru, server pošle prohlížeči HTML, vygenerované na serveru, pomocí PHP))
-- když zavoláte pomocí JS stejnou URL, a __nechcete_a_neočekáváte_odpověď __ ( done(function...), .fail(function()), tak si server zpracuje to co má (včetně všemožných chyb)), a zahodí, pokud ten výsledek "nikdo" nechce)


Pořád si pletete "vložit do php" a "zobrazit uživateli"
vložit do PHP by znamenalo, že pomocí JS chcete měnit soubory na serveru, a to asi nechcete, ne?

Znáte-li řešení, sdělte ho - pomůžete ostatním při řešení stejného problému, i případný "rádce" bude vědět, poradil-li správně nebo špatně.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
22. zář 2015 15:30 #123523

ernst napsal: ne já je nepotřebuji uložit do databáze.
potřebuji je dostat do php (jako aktuální pozici) a v tom spočítat vzdálenost od jiných souřadnic.

A dál? Co s tou vzdáleností?

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od karel
22. zář 2015 15:34 #123524
imho (asi) zobrazit nejbližší ...

Znáte-li řešení, sdělte ho - pomůžete ostatním při řešení stejného problému, i případný "rádce" bude vědět, poradil-li správně nebo špatně.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.