JAVASCRIPT pomoc oko promjene jezika bez refresha stranice

Pozz, trebam malu pomoc oko jedne skripte. Radi se o <select> i mjenjanju jezika. Treba mi kad odaberem jezik da se automatski prebaci na taj jezik tj da pozove link iz <option>. Vidio sam da ima hvatanje value od optiona ali mi ne treba to nego samo da aktivira link.

Bez <select><option> radi normalno sve ok

<?php
  echo '<select>';
foreach($langs as $lang)
{
	$querystring='';
	if($_SERVER['QUERY_STRING']) $querystring = "&amp;query=".rawurlencode($_SERVER['QUERY_STRING']);

	echo '<option value="'.$lang[0].'"><a href="sc_language.php?new_lang='.$lang[0].$querystring.'" title="'.$lang[1].'">'.$lang[1].'</a></option>';

}

echo '</select>';

Ne znam jesam te najbolje shvatio budući da si pokazao php kod a tražiš pomoć u javaScriptu.

Ako sam uspio dobro shvatiti ti trebaš unutar change ili click eventa na select elemenu dohvatiti vrijednost (value) odabranog elementa (option). Tu vrijednost ajax-om šalješ u php skriptu a kao rezultat, ovisno o primljenim podacima, ta php skripta klijentskoj strani vraća url za neki jezik. Onda na klijentskoj strani napraviš load tog url-a bez refresh-a.

Ne bi se stel mesat, ali kaj bu mu to pomoglo? Load URL bez refresha? Pa podatci se moraju promijeniti ili ne?

@mlukac89 ti trebas nekakav 2 way data binding, a to sa PHPom nebus postigel. Tu bu ti trebalo istotako i Javascript(AngularJS, KnockoutJS, Backbone ili kaj ja znam kaj petoga) i jedan dobar API u backendu koji ce ti pomoci. Ovak kak si si to zamislil nebu islo.

Po naslovu sam pretpostavio da želi zamijeniti stranicu sa drugim jezikom bez refresh-a.
Inače još uvijek ne vidim kakve veze ovaj kod ima sa javaScriptom niti što se zapravo želi postići, pa nagađam.
Ma ok…zaboravite. Bitno da si ga ti shvatio, nadam se da će i on tebe :smile:

Da podaci se moraju promjeniti kad odaberem neki od <option value="">link</option> u mom slucaju link je

<a href="sc_language.php?new_lang='.$lang[0].$querystring.'" title="'.$lang[1].'">'.$lang[1].'</a>
// $lang[0] je skraceno en,hr,itd a $lang[1] je dugacko ime Croatian, English ...........

Ako napravim samo link ovako echo '<a href="sc_language.php?new_lang='.$lang[0].$querystring.'" title="'.$lang[1].'">'.$lang[1].'</a>';
kad kliknem na njega prebaci mi jezik ali sa option nece da mi aktivira link

Evo slike http://prntscr.com/6j4l2d

Evo ovako mi nesta treba http://jsfiddle.net/Us8uc/2167/ samo da radi ■■■■■ ti nebi napravio da si isus, kad odaberes jezik tj <option>link</option> da mi pokrene taj link…

pa jel tebi onda treba ovako nešto? …

<select id="list" onchange="location = this.options[this.selectedIndex].value;">
	 <option value="#">Language</option>
	 <option value="http://google.com">English</option>
	 <option value="http://facebook.com">Croatian</option>
</select>

U ovisnosti koji option odabereš…link te vodi na neku stranicu.

Tako nesto ali value mi je en, hr i to mi je potrebno za spremit u bazu kad user odabere da mu to bude default jezik na stranici. Znaci value nista ovo tvoje sam vec isporobo. Ali ne razumijem zasto link ne radi unutar <option> tagova ? Nemogu niki k… s njim jbt

ovo mi je najbitnije jer preko toga mjenjam jezik ono gore sam stavio linkove samo za test,

sc_language.php?new_lang='.$lang[0]

znaci ovo cita iz baze kao

sc_language.php?new_lang=en

i kad napravim foreach da mi prikazuje imena ili zastavice sa linkom to radi sve ok i prevodi mi cjelu stranicu

echo '<a href="sc_language.php?new_lang='.$lang[0]">'.$lang[1].'</a>';

Ok, ajde onda samo reci što točno trebaš dobiti kada klikneš neki option. Njegov value u javascriptu? Onda ovako…
http://jsfiddle.net/odyt01q3/

Ako nije…opiši točno šta želiš postići sa javascriptom ako baš njega hoćeš koristiti, jer value možeš i preko GET-a kroz php dobiti ako ga misliš spremiti u bazu.

Trebam dobit da mi se promjeni jezik stranice kad odaberem option, ponasanje kao da kliknem na link ovaki
<a href="sc_language.php?new_lang=hr">Croatian</a>

Cim kliknem na <option> da mi pozove ovaj link

Ok, znači treba ti ovako nešto

<form method="post" action="#" name="myform">
     <select name="x" onchange="myform.submit();">
         <option value="hr">Htvatski</option>
         <option value="en">Engleski</option>
     </select>
 </form>

Nakon klika na option forma se submita i u POST-u dobiješ hr ili en. Na vrhu stranice provjeri vrijednost koju dobiješ u tom POST-u (možeš i GET koristiti) i u ovisnosti o tome redirektaj na stranicu sa željenim jezikom.

Ovo je samo banalni primjer za shvaćanje koncepta.
Znači ne trebaju ti linkovi unutar optiona, nego u ovisnosti o value kojeg primiš iz optiona radiš redirekt na stranicu s nekim jezikom.

Gle value mi nije bitan da dobijem ili da uzmem to sve znam i kuzim, samo ne kuzim zasto se link nece pokrenit unutar option tagovi. A meni treba link jer klikom na link se mjenja jezik stranice, a ne selectom optiona.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Promjeni jezik</title>
</head>

<body>
<select onchange="window.location.href='sc_language.php?new_lang='+this.value">
         <option value="hr">Hrvatski</option>
         <option value="en">Engleski</option>
</select>
</body>

</html>
1 Like

To je to thx :slight_smile: .

I admini bi mogli promjenit ovo s min 20 znakova + pre code napravit da ne moras svaki put kad paste code unutra pomicat 4 mjesta :slight_smile: