Forum » Izdelava spletišč » Javascript spremenjivko vstavi PHP
Javascript spremenjivko vstavi PHP
a-ptuj1 ::
Imam že daljšo kodo v JavaScrit (JS). Sedaj pa bi moral vrednost spremenljivke JS na primer "a = 3" vstaviti PHP formulo, tako da bi se ta vrednost prenesla v vrednost spremenljivke "$a = 3", kot kaže spodnja koda. Prosim za pomoč
<script language='javascript'> var a = 3; </script> <?php $a = "<script language='javascript'> document.write(a);</script>"; for($i=0; $i < $a; $i++) { echo "Test"; } ?>
- spremenilo: a-ptuj1 ()
k--p ::
Najprej moraš razumeti delovanje. Javascript se izvaja v brskalniku, ti pa bi rad vrednost poslal na server, kjer se bo izvedla php skripta. Najlažje to storiš z AJAX requsteom -klicem na server, če uporabljaš kakšno priročno js knjižnico, npr. jquery ... Lahko pa narediš ajax tudi v čistem js ...
Vrednost pošlješ npr. s post:
PHP skripta lol.php prebere vrednost:
Vrednost pošlješ npr. s post:
$.ajax({ type: 'post', url: 'lol.php', data: { a: 3 }, success: function( result ) { console.log( result ); če php skripta kaj vrača, se bo tukaj izpisalo } });
PHP skripta lol.php prebere vrednost:
<?php $a= $_POST['a']; echo 3+$a*5; ?>
a-ptuj1 ::
Razumem, da Javascript dela v brskalniku, PHP pa na strežniku.
Sem poskusil to vašo kodo pa mi ne gre. Pa ne vem zakaj ne.
Razumem, da bi moral poslati vrednost var a = 3 na strežnik in nato v $a. Vendar mi to ne uspe.
Sem poskusil to vašo kodo pa mi ne gre. Pa ne vem zakaj ne.
Razumem, da bi moral poslati vrednost var a = 3 na strežnik in nato v $a. Vendar mi to ne uspe.
a-ptuj1 ::
Sem ustvaril dve datoteki
test 1.htm
in datoteko 1.php
in pričakoval da mi bi izpisalo rezultat, vendar se nič ne zgodi. Lepo prosil, če mi lahko pomagate kaj je tu narobe. Zakaj mi vrednosti spremenljivke "b" ne prenese v "$a".
test 1.htm
<script language='javascript'> var b = 3: $.ajax({ type: 'post', url: '1.php', data: { a: b }, success: function( result ) { console.log( result ); če php skripta kaj vrača, se bo tukaj izpisalo } }); </script>
in datoteko 1.php
<?php $a= $_POST['a']; echo $a; ?>
in pričakoval da mi bi izpisalo rezultat, vendar se nič ne zgodi. Lepo prosil, če mi lahko pomagate kaj je tu narobe. Zakaj mi vrednosti spremenljivke "b" ne prenese v "$a".
Zgodovina sprememb…
- spremenilo: a-ptuj1 ()
a-ptuj1 ::
Sem v kodo dodal še
Pa se ponovni nič ne zgodi.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
Pa se ponovni nič ne zgodi.
satko ::
v tvoji kodi sta dve napaki
komentarji v javascriptu morajo biti zakomentirani z // ali /* */ za večvrstične komentarje
tu pa si imel dvopičje namesto podpičja
če to popraviš ti bo izpisalo to kar vrača 1.php v konzolo brskalnika
komentarji v javascriptu morajo biti zakomentirani z // ali /* */ za večvrstične komentarje
console.log( result ); //če php skripta kaj vrača, se bo tukaj izpisalo
tu pa si imel dvopičje namesto podpičja
var b = 3;
če to popraviš ti bo izpisalo to kar vrača 1.php v konzolo brskalnika
Zgodovina sprememb…
- spremenil: satko ()
a-ptuj1 ::
Mi s pomočjo AJAX-a ne gre in ne gre.
Sem že mislil, da je kaj narobe na strežniku, pa sem testiral s drugo kodo, ki pa dela OK.
3.php
2.php
Vendar je pri tej kodi težava v tem, da moraš s "document.location" preusmeriti podatek iz 3.php na 2.php, saj iz 3.php v 3.php ne gre. Jaz pa bi rad ostal ves čas na isti strani (3.php).
Prava rešitev bi bila, da bi se vrednosti spremenljivke a = 3 iz JavaScripta, ki se nahaja na 3.php prenesla preko strežnika v $a (PHP) nazaj na isto stran (3.php).
Sem že mislil, da je kaj narobe na strežniku, pa sem testiral s drugo kodo, ki pa dela OK.
3.php
<script> var1 = 1234 document.location = '2.php?var1=' + var1 </script>
2.php
<?php $var1 = $_GET['var1']; $a = ($var1 - 1232) * 2; echo $a; ?>
Vendar je pri tej kodi težava v tem, da moraš s "document.location" preusmeriti podatek iz 3.php na 2.php, saj iz 3.php v 3.php ne gre. Jaz pa bi rad ostal ves čas na isti strani (3.php).
Prava rešitev bi bila, da bi se vrednosti spremenljivke a = 3 iz JavaScripta, ki se nahaja na 3.php prenesla preko strežnika v $a (PHP) nazaj na isto stran (3.php).
satko ::
Tudi prejšnja koda deluje čisto vredu, če pa kaj ne dela pa najboljše da preveriš za kakšne errorje s pomočjo brskalnikove konzole (F12 na večini brskalnikov)
Za to kar pa hočeš narediti tu pa najbolje da se lotiš tako
Za to kar pa hočeš narediti tu pa najbolje da se lotiš tako
<?php if (isset($_GET['var1'])){ //preverimo če je parameter podan echo $_GET['var1'] + 1; //in ga izpišemo povečanega za 1 } else { ?> // če ni podan izpišemo JS kodo, ki se bo izvedla <script> var1 = 1234; document.location = 'test.php?var1=' + var1; </script> <?php } ?>
Zgodovina sprememb…
- spremenil: satko ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Matematična analiza naloga (strani: 1 2 )Oddelek: Šola | 6527 (4877) | lebdim |
» | [javascript] return stavekOddelek: Programiranje | 965 (787) | lebdim |
» | Pomoč pri sestavi algoritmaOddelek: Programiranje | 9385 (8216) | mihy11 |
» | vprašanje iz flasha (actionscripta)Oddelek: Programiranje | 963 (780) | [MYTiX] |
» | php variable scope problemOddelek: Izdelava spletišč | 1279 (1192) | darh |