javascript

Programovacie jazyky, rady, poradňa...
martin323
Amateur
Amateur
Príspevky: 22
Registrovaný: 14 okt 2008, 17:44

javascript

Príspevok od používateľa martin323 »

Kód: Vybrať všetko

<script language="javascript" type="text/javascript">
function vrat(id)
{
return (document.getElementById(id).value);
}

</script>
<input type=hidden name=meno id=4 value=hodnota>
Tato funkcia by mala vratit hodnotu toho inptutu?
Pretoze mi to nejak nefunguje. Ak vo funkci nahradim return za alert, hodnotu mi vypise cez alert.
Ale potreboval by som tu hodnotu len vratit, a nasledne ju pouzit v podmienke. Dik za pomoc...
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

je to v poriadku, ale pokial tú funkciu nezavoláš, tak o nej nevieš. Alert ti hodí hneď pri parsovaní stránky. Aby si dostal tú hodnotu, musíš funkciu zavolať (napríklad v alerte):

Kód: Vybrať všetko

<a href="javascript:alert(vrat(4))">vyvolaj fciu</a>
martin323
Amateur
Amateur
Príspevky: 22
Registrovaný: 14 okt 2008, 17:44

Príspevok od používateľa martin323 »

Tu sa mi vyskytol problem pri posielani formularu cez Ajax:
v <div id="result"></div> poslane data normalne zobrazi, ale ked posielam text s diakritikou, vypise to akoby v inom kodovani napr. ked poslem č, vypise %u010D.
Vedel by niekto ako na to?

Kód: Vybrať všetko

<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<script language="Javascript">
function xmlhttpPost(strURL) {
    var xmlHttpReq = false;
    var self = this;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    self.xmlHttpReq.open('POST', strURL, true);
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlHttpReq.onreadystatechange = function() {
        if (self.xmlHttpReq.readyState == 4) {
            updatepage(self.xmlHttpReq.responseText);
        }
    }
    self.xmlHttpReq.send(getquerystring());
}



function getquerystring() {
    var rank = document.getElementById('3').value;
    qstr = 'rank=' + escape(rank); 
    return qstr;
}

function updatepage(str){
    document.getElementById("result").innerHTML = str;
}
</script>

<input id=3 value="111" type="text" >
<input value="Go" type="button" onclick='javascript:xmlhttpPost("ajax-send.php")'>
<div id="result"></div>
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Zobrazí sa ti len to, čo z toho php skriptu posielaš. ;) (vyzerá to, ako keby sa posielala tá "escape-ovaná" verzia toho reťazca)
martin323
Amateur
Amateur
Príspevky: 22
Registrovaný: 14 okt 2008, 17:44

Príspevok od používateľa martin323 »

v ajax-send.php je akurat toto:

Kód: Vybrať všetko

<?php
echo "$_POST[rank]";
?>
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

A v tom javascripte je toto:

Kód: Vybrať všetko

qstr = 'rank=' + escape(rank);
:)
martin323
Amateur
Amateur
Príspevky: 22
Registrovaný: 14 okt 2008, 17:44

Príspevok od používateľa martin323 »

super, dik :)

//autoeditácia príspevku ( 22 Dec 2008, 20:50 )
Hm to kodovanie mi blbne pri pridavani do databazy.
Ked vlozim do databazy $_POST[post], znaky su zase rozhadzane.
Ked vlozim "$_POST[post] - ččč" to iste ale ččč posle spravne..
Nevies este co s tymto?
Insert do db je v tom subore ajax-send.php
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Databázu (a pripojenie k nej) máš nastavenú dobre?
martin323
Amateur
Amateur
Príspevky: 22
Registrovaný: 14 okt 2008, 17:44

Príspevok od používateľa martin323 »

Ak mas na mysli SET NAMES , SET CHARACTER SET ...
Tak tieto veci v skriptoch nemam. Nieco som o tom cital, ale doteraz som problem s kodovanim nemal, ani pri inserte do db. Akurat teraz ked to posielam cez Ajax. Ak by to pomohlo mozes mi napisat kam to mam do skriptu vlozit? Zatial co som skusal tak to ostalo bez zmeny...

Kód: Vybrať všetko

$query = mysql_query("INSERT INTO tab(userID,row_id)  VALUES('$_POST[post]','$x' ");
Inak ak by to bola chyba pripojenia na databazu, tak by odosielalo zle aj znaky ktore su tam napisane rucne nie?

Kód: Vybrať všetko

$query = mysql_query("INSERT INTO tab(userID,row_id)  VALUES('$_POST[post]...čščščščěš','$x' ");
toto odosle spravne čščščščěš

// a <div id=result></div> pritom tu to zobrazuje spravne
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

A čo vlastne znamená, že sú tie znaky rozhádzané?
martin323
Amateur
Amateur
Príspevky: 22
Registrovaný: 14 okt 2008, 17:44

Príspevok od používateľa martin323 »

sorry, myslel som to tak ze napisem ččšš a do db sa vlozi Ä�Ä�ĹĄĹĄ
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Vyzerá to tak, že sa to do DB ukladá (a potom načítava) v kódovaní UTF-8. Skús tam pridať to SET NAMES a/alebo SET CHARACTER SET (dáva sa to hneď za otvorenie DB; teda hneď za mysql_connect).
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

martin323 napísal:...Ak by to pomohlo mozes mi napisat kam to mam do skriptu vlozit? ...
hneď na začiatok:

Kód: Vybrať všetko

mysql_select_db($menodatabazi)or die("Chyba pri pokuse o pripojenie");
@mysql_query("SET NAMES cp1250");
ak to nepomôže, možno ti ajaxom chodí text v inom kodovaní (preto sa uloží zle, a tie priame vstupy uloží dobre). Skús ich prekonvertovať cez iconv() nejak takto:

Kód: Vybrať všetko

iconv("UTF-8", "CP1250", $_POST['post']);
Samozrejme kodovania si uprav podla seba
martin323
Amateur
Amateur
Príspevky: 22
Registrovaný: 14 okt 2008, 17:44

Príspevok od používateľa martin323 »

Diky, zda sa ze by mohlo pomoct to druhe.
Ked to prejde cez funkciu iconv() blbne iba š za ktore vypisuje �.

//autoeditácia príspevku ( 22 Dec 2008, 22:20 )
zle som to skontroloval takze namiesto ľščťžýáíéô vypise ž�č��ýáíéô
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

treba sa pohrať s kodovaniami. To že ja som dal prevod z cp1250 do UTF-8 ako ukážku neznamená že to takto musíš mať. Nenapísal si (aspoň som nevidel, iba tak zbežne som prebehol tému) aké kodovanie máš v db, v tabulkách, na stránke ktorá posiela request...
martin323
Amateur
Amateur
Príspevky: 22
Registrovaný: 14 okt 2008, 17:44

Príspevok od používateľa martin323 »

J nakoniec to bolo ISO aj ked na stranke pouzivam CP1250.
Diki chalani, velmi ste mi pomohli...
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Na stránke má pravdepodobne kódovanie windows-1250 (teda ak tam má naozajstný html kód a nie to, čo poslal vyššie). :)
martin323
Amateur
Amateur
Príspevky: 22
Registrovaný: 14 okt 2008, 17:44

Príspevok od používateľa martin323 »

no hej, myslel som windows-1250..
aughostino
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1269
Registrovaný: 26 apr 2007, 16:05

Príspevok od používateľa aughostino »

takze vyskytol sa mi problem mam html index.html a v v nom zobrazujem config.js

v config.js mam document.write("Ďakujeme!")

a v index.html sa mi zobrazuje �akujeme!

skusal som aj

Kód: Vybrať všetko

<script type="text/javascript" src="config.js" charset="utf-8"></script>
a nepomohlo ako nastavit tomu js suboru aby zobrazoval text v utf-8 kodovani?

//edit: este mam otazocku
ako namiesto onclick="history.go(-1)" dať niečo aby sa zobrazovala konkretna stranka? napriklad stranka.html

Kód: Vybrať všetko

<input type="button" value="Opakovať" name="B1"
  onClick="history.go(-1)">
:oops:
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

aughostino napísal:takze vyskytol sa mi problem mam html index.html a v v nom zobrazujem config.js

v config.js mam document.write("Ďakujeme!")

a v index.html sa mi zobrazuje �akujeme!

skusal som aj

Kód: Vybrať všetko

<script type="text/javascript" src="config.js" charset="utf-8"></script>
a nepomohlo ako nastavit tomu js suboru aby zobrazoval text v utf-8 kodovani?
Ty náhodne skúšaš nejaké kódovania a čakáš, že to nejakým zázrakom začne fungovať? Všetky súbory musia byť v rovnakom kódovaní a rovnaké kódovanie musíš použiť aj v html hlavičke.

A k tomu druhému. Použi window.location = "xxx.html" (prípadne niečo podobné).
Napísať odpoveď