Autor | Zpráva | ||
---|---|---|---|
Peet Profil |
#1 · Zasláno: 17. 3. 2013, 19:46:59
Dobrý den jak se dá vyřešit toto ?
<script> function vrat(neco){ . . . return vysledek; } </script> <?php $test; $prom='<script>vrat("'.$test.'")</script>'; ?> díky za rady |
||
Str4wberry Profil |
#2 · Zasláno: 17. 3. 2013, 19:55:23
A co na tom chcete řešit?
|
||
Peet Profil |
#3 · Zasláno: 17. 3. 2013, 20:00:13
toto nefunguje
když jsem zkoušel toto $prom="<script>return 1</script>"; tak proměnná obsahovala přesně to co jsem do ní dal tudíž skript to vubec nevnímá. |
||
Str4wberry Profil |
#4 · Zasláno: 17. 3. 2013, 20:03:04
|
||
Tomkinss Profil |
#5 · Zasláno: 17. 3. 2013, 20:05:58
Spôsobom ako to chceš riešiť to nevyriešiš. Vysledok js funkcie si do php premennej nemozes priradit, pretoze php sa vykonava na servery a js az neskor u teba v prehliadači.
|
||
Peet Profil |
jojo už jsem to četl.. snažím se vyřešit převedení adresy na Latitude,longtitude...
vim ze funkce od google maps api to umí jenže umím převést jen jednu adresu takhle var geocoder = new google.maps.Geocoder(); // creating a new geocode object geocoder.geocode( { 'address': nejakaadresa1, function(results, status){ var location1 = results[0].geometry.location; var latlng=new google.maps.LatLng(location1.lat(),location1.lng()); }); jenze v tuhle chvily je proměnná která drží ty parametry ve funkci tudíž ji nedostanu ven takhle var geocoder = new google.maps.Geocoder(); // creating a new geocode object geocoder.geocode( { 'address': nejakaadresa1, function(results, status){ var location1 = results[0].geometry.location; var latlng=new google.maps.LatLng(location1.lat(),location1.lng()); }); document.write(latlng); //nelze ! a zkrátka nevím jak to mám udělat.. tak mě napadlo převést si všechny adresy z db a uložit do db pouze latlng souradnice ale zjistil jsem ze to tedy take nejde :D.. |
||
Virtus Profil |
#7 · Zasláno: 17. 3. 2013, 20:32:50
Nejsem odborník na JS ale pokud bys tohle:
var latlng=new google.maps.LatLng(location1.lat(),location1.lng()); latlng=new google.maps.LatLng(location1.lat(),location1.lng()); document.write(latlng); |
||
Peet Profil |
#8 · Zasláno: 17. 3. 2013, 20:56:26 · Upravil/a: Peet
ne ale vím že kdysi dávno mi to šlo podle vašeho předpokladu. jen se zeptám dle čeho soudíte že by to mohlo takto fungovat ? jakej je rozdíl mezi tím zda tam mám var nebo ne ?
jinak funguje mi to pouze takhle. function initialize(address) { var location1; var latlng; var geocoder = new google.maps.Geocoder(); // creating a new geocode object geocoder.geocode( { 'address': address}, function(results, status){ location1 = results[0].geometry.location; latlng=new google.maps.LatLng(location1.lat(),location1.lng()); showMap(latlng); }); } function showMap(latlng){ var myOptions = { zoom: 18, center: latlng, mapTypeId: 'satellite' }; . . . . } jen takhle to funguje protoze on preda tu promenou latlng.. jinak ji predat nelze.. asi. jeste jsem zkousel pomocí funkce, coz by pro me bylo nejprijemnejsi.. ale take nejde function createLatLng(address){ var geocoder = new google.maps.Geocoder(); // creating a new geocode object geocoder.geocode( { 'address': address}, function(results, status){ var location1 = results[0].geometry.location; var latlng=new google.maps.LatLng(location1.lat(),location1.lng()); return latlng; }); } function initialize(address) { var latlng=createLatLng(address); var myOptions = { zoom: 18, center: latlng, mapTypeId: 'satellite' }; . . . } |
||
Alphard Profil |
#9 · Zasláno: 17. 3. 2013, 21:02:37
Peet:
Myslím, že to šlo zjistit i bez js přes jejich API, zkoušel jste hledat? |
||
Peet Profil |
#10 · Zasláno: 17. 3. 2013, 21:10:17
ano hledal jsem... a nasel jsem navod jak prevest jednu adresu na latlng tedko už neřeším jak to uložit do db ale jaktože mi nefunguje ta js funkce.. v tom návodu převedli jednu adresu a tu zobrazily na mapě. viz kód #8. a zajímá mě jaký je rozdíl mezi kódem #8 ta první část a tou druhou částí mělo by to přeci fungovat stejně. a ještě mě zajímá jaký je tedy rozdíl mezi tím jestli použiju var nebo ne. Děkuji
|
||
Virtus Profil |
#11 · Zasláno: 17. 3. 2013, 21:11:20
No protože když je před proměnou var v JS, tak je proměnná označena jako lokální, tedy pokud budu mít proměnou ve funkci uznačenou jako var, budu tuto proměnnou vidět pouze v dané funkci, kdyžto bez var, je proměnná globální, tudíž jí můžu použít všude
|
||
Peet Profil |
#12 · Zasláno: 17. 3. 2013, 21:15:58 · Upravil/a: Peet
ok děkuji ještě to nějak zkusím..
ne prostě to nefunguje.. i bez var to prostě píše že location1 is undefined.. nevíte kde může být problém ? |
||
Peet Profil |
Ta už jsem to jakš takš vyřešil, ale co se děje teď tak to už absolutně nechápu.. jakoby si to dělalo co chce. je to delší kód kdyby se na to někdo podíval a zjistil chybu budu moc rád.
JAVASCRIPT //MAPS //funkce která převede adresu na latlng a nastaví ji na center mapy function initialize(address,typ,zoom) { geocoder = new google.maps.Geocoder(); // creating a new geocode object geocoder.geocode( { 'address': address}, function(results, status){ lokace = results[0].geometry.location; centerLatLng=new google.maps.LatLng(lokace.lat(),lokace.lng()); showMap(typ,zoom); }); } function showMap(typ,zoom){ //Vykreslení mapy var myOptions = { zoom: zoom, center: centerLatLng, mapTypeId: typ }; map = new google.maps.Map(document.getElementById('map'), myOptions); map.setTilt(45); } //funkce která vytvoří marker pro danou adresu a vrátí latlng function createMarker(address,popis,animace=""){ geocoder = new google.maps.Geocoder(); // creating a new geocode object geocoder.geocode( { 'address': address}, function(results, status){ if (status == google.maps.GeocoderStatus.OK){ lokace = results[0].geometry.location; latlng=new google.maps.LatLng(lokace.lat(),lokace.lng()); var marker_options={ position: latlng, icon: "http://neco.cz/icon.jpg", title: popis } var marker=new google.maps.Marker(marker_options); marker.setMap(map); if(animace=="BOUNCE") marker.setAnimation(google.maps.Animation.BOUNCE); return latlng; } }); } //funkce která vytvoří marker z mé polohy a vrátí latlng function myPosition(){ if(navigator.geolocation) { browserSupportFlag = true; navigator.geolocation.getCurrentPosition(function(position) { latlng = new google.maps.LatLng(position.coords.latitude,position.coords.longitude); var marker_options={ position: latlng, icon: "http://neco.cz/icon.jpg", title: "Zde se nacházím" } var marker=new google.maps.Marker(marker_options); marker.setMap(map); return latlng; }); } // Browser doesn't support Geolocation else { alert("Zjištění polohy selhalo, zkuste obnovit stránku"); } } //vykreslení čáry mezi dvěma body function createPolyline(address1,address2){ points=[ new google.maps.LatLng(address1), new google.maps.LatLng(address2) ]; var polyline = new google.maps.Polyline({ path: points, strokeColor: "#ea991b", strokeWeight: 2 }); polyline.setMap(map); } SPOUŠTĚCÍ SOUBOR <script> initialize("Praha","roadmap",11); var my=myPosition(); var secondPosition=createMarker("Brno","Popis","BOUNCE"); createPolyline(my,secondPosition); </script> Co mi nejde do hlavy ! když vytvářím funcemi nějaké markery ať už mé pozice nebo nějaké adresy tak vždy zná objekt "map" ale jakmile chci vykreslit čáru tak mi firebug napíše že "map is undefined" ale když do té samé funkce dám funkci která by měla vytvořit třeba ten marker tak najednou zase objekt map zná. Už opravdu nevím. |
||
Časová prodleva: 6 dní
|
|||
W4C Profil |
#14 · Zasláno: 24. 3. 2013, 01:01:38
Ohledně toho JS do PHP:
Dnes jsem potřeboval dostat výsledek js kodu do php proměnné a tohle funguje, takže se to dá případně použít: <script type="text/javascript"> var jsprom = 'funguje to'; <?php $test = "<script>document.write(jsprom)</script>"?> </script> <?php echo 'Vysledek: '.$test;?> |
||
Virtus Profil |
No tak tohle ale funguje trochu jinak než si myslíš:
do proměnné test se ti uloží celý ten řetězec: <script>document.write(jsprom)</script>, ale neprovede se na stránku (do prohlížeče) se ti tedy poté odešle tohle: <script type="text/javascript"> var jsprom = 'funguje to'; </script> Vysledek: <script>document.write(jsprom)</script> Nastaví proměnnou jsprom a uloží do ní řetězec "funguje to" A nasledně o pár řákdů níž vypíše: Vysledek: a opět vykoná druhý JS, který vypíše obsah proměnné jsprom Schválně si v prohlížeči otevři zdrojový kód stránky a podívej se nato. |
||
W4C Profil |
#16 · Zasláno: 24. 3. 2013, 02:02:09
Jasně, script se provede ve dvou částech na jedné stránce - odešle se ven, vrátí se výsledek, ten se odešle ke zpracování PHP, script se dokončí a PHP výsledek s použitím vnořeného obslužného javascriptu vytiskne - to je přece účel, ne?
|
||
Virtus Profil |
#17 · Zasláno: 24. 3. 2013, 02:13:19
W4C:
„Jasně, script se provede ve dvou částech na jedné stránce - odešle se ven, vrátí se výsledek, ten se odešle ke zpracování PHP, script se dokončí a PHP výsledek s použitím vnořeného obslužného javascriptu vytiskne - to je přece účel, ne?“ A kde máš v tomhle to odeslání do PHP? <script type="text/javascript"> var jsprom = 'funguje to'; <?php $test = "<script>document.write(jsprom)</script>"?> </script> <?php echo 'Vysledek: '.$test;?> |
||
W4C Profil |
#18 · Zasláno: 24. 3. 2013, 03:25:31
Virtus:
do proměnné se uloží(přiřadí/odešle) jsprom, včetně JS, protože bez jsprom by druhý script byl k ničemu a nebylo by proto nic, co by se dalo prohlížeči odesílat. |
||
Virtus Profil |
W4C:
[#14] „Dnes jsem potřeboval dostat výsledek js kodu do php proměnné a tohle funguje“ [#18] „do proměnné se uloží(přiřadí/odešle) jsprom, včetně JS“ se trochu vylučuje, nemyslíš, prvně napíšeš výsledek JS, jenže výsledek tohohle: <script>document.write(jsprom)</script> je vypsaní textu funguje to, tudíš v PHP proměnné $test, bych měl podle tvého prvního výroku mít uloženo funguje to a pak tvrzení v [#18], kde sám napíšeš že do proměnné přiřadíš celý JS, tudíš v PHP najednou výsledek JS nemáš, protože máš v PHP celej JS kód.
Tohle: <script type="text/javascript"> var jsprom = 'funguje to'; <?php $test = "<script>document.write(jsprom)</script>"?> </script> <?php echo 'Vysledek: '.$test;?> <script type="text/javascript"> var jsprom = 'funguje to'; </script> Vysledek: <script>document.write(jsprom)</script> Podle toho co si napsal v [#14] by to mělo ale vypadat takhle: <script type="text/javascript"> var jsprom = 'funguje to'; </script> Vysledek: funguje to |
||
W4C Profil |
#20 · Zasláno: 24. 3. 2013, 05:15:33
Virtus:
Vůbec nic se nevylučuje: -14 je pravda -výsledek jsem tam dostal -18 je samozřejmě taky pravda, protože díky "JS(2)" se výsledek "jsprom" zobrazil |
||
Alphard Profil |
#21 · Zasláno: 24. 3. 2013, 09:29:40
Ale je to dobrý argument proč neescapovat, nepotřebujeme ajax ;-)
W4C: Tak když vám to tak pěkně fungje, mohl byste v první části použít var jsprom = prompt("Zadejte údaj"); a v PHP ten údaj uložit do souboru.
|
||
Časová prodleva: 11 let
|
0