Autor | Zpráva | ||
---|---|---|---|
tito100 Profil |
#1 · Zasláno: 13. 1. 2010, 11:48:12 · Upravil/a: tito100
zdravým všetkých.
mám problém pri posielaní diakrityki do databáze cez ajax. skúšam všetko možné a le niejak mi to nejde. na zapísanie do db používam : function diakritika($text) { return ((StrTr(($text), "ÁÄČÇĎÉĚËÍŇÓÖŘŠŤÚŮÜÝŽáäčçďéěëíňóöřšťúůüýžABCDEFGHIJKLMNOPRSTUVWXYZ", "aaccdeeeinoorstuuuyzaaccdeeeinoorstuuuyzabcdefghijklmnoprstuvexyz"))); } function sql($sql) { return mysql_escape_string(htmlspecialchars($sql)); }; $dotaz="UPDATE `zoznam` SET `name_deutsch` = '".sql(($_GET['edit']))."',`name_deutsch_alternative` = '".sql(diakritika($_GET['edit']))."', `last_modifed` = TIMESTAMP( '' ) WHERE `id` =".sql($_GET['id']); ked volám tento script cez URL tak je všetko v poriadku. problém nastáva, ked to volám cez xmlHttp aneb ajax. v tedy mi to dáva zakdovane znaky, v ktorých neviem zmenit diakritiku. na stránke ich však zobrazuje správne. tu je výpis z DB po spracovaní cez url: url pre odoslanim ?id=10&edit=šřčšřščřGERE po odoslani ?id=10&edit=%9A%F8%E8%9A%F8%9A%E8%F8GERE a po prejdeni funkciou diakritika srcsrscrgere cez ajax to robý toto pred odoslanim čěščěščhASASFAS po odoslani do DB :ÄěšÄěšÄhASASFAS je jasne že tu sa diakritika zmenit pomocou mojej funkcie neda prosím o radu ako dostat cez ajax rovnaký výsledok ako bez neho . |
||
tito100 Profil |
#2 · Zasláno: 13. 1. 2010, 13:13:22 · Upravil/a: tito100
pridavam este funkciu ktoru pouzivam na odoslanie :
var xmlhttp; function initAjax() { try { xmlhttp = new XMLHttpRequest(); } catch (e) { try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { alert("Váš prohlížeč nepodporuje AJAX! prosim zmente prehliadac"); return false; } } } } initAjax(); var g_AjaxNumbOfCalling=0; var g_AjaxLink=''; var g_AjaxFunctSucess; var g_AjaxFunctFailed; var g_AjaxInfoDiv; function AjaxReques(link,functSuces,functFailed,infodiv) { g_AjaxNumbOfCalling=0; g_AjaxLink = link; g_AjaxFunctSucess = functSuces; g_AjaxFunctFailed = functFailed; g_AjaxInfoDiv = infodiv; xmlhttp.open("GET", encodeURI(g_AjaxLink), true); xmlhttp.setRequestHeader("Content-type","text/html; charset=utf-8"); xmlhttp.send(null); xmlhttp.onreadystatechange = AjaxCheckRequest; infodiv.innerHTML = 'AjaX : posielam poziadavku' } function AjaxCheckRequest() { g_AjaxNumbOfCalling+=1 if (xmlhttp.readyState == 4) { g_AjaxInfoDiv.innerHTML = 'AjaX : uspesne spracovane'; g_AjaxFunctSucess(xmlhttp.responseText); }else { g_AjaxInfoDiv.innerHTML = 'AjaX : CHYBA pri spracovani'; g_AjaxFunctFailed(); } } |
||
nightfish Profil |
#3 · Zasláno: 13. 1. 2010, 13:33:18
klasický problém
musíš zajistit, aby kódování stránky, ze které se odesílá AJAX požadavek, kódování PHP skriptu a kódování připojení k databázi byly shodné, případně pokud nebudou, tak aby na se na vhodných místech provádělo překódovávání |
||
tito100 Profil |
#4 · Zasláno: 13. 1. 2010, 13:39:26 · Upravil/a: tito100
html kodovanie
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> mysql kodovanie mam tiež na utf-8 a ten script do ktoreho to posiela ajax, a cez ktory sa to uklada do DB je cislo len php subor. myslím že tam sa kodovanie nenastavuje. takže v tomto problém nevydím.skúšal som aj poslat kodovaciu hlavičku cez setRequestHeader . ale ani to nepomohlo pravdaže to všetko skúsim ešte raz :-) |
||
nightfish Profil |
#5 · Zasláno: 13. 1. 2010, 13:44:41
tito100:
„content="text/htmll;“ tady ti přebývá jedno písmeno „cez ktory sa to uklada do DB je cislo len php subor. myslím že tam sa kodovanie nenastavuje“ ne, kódování se nastavuje v editoru, pomocí kterého ten soubor vytváříš zkontroluj si, že ten PHP soubor je také v utf-8 „mysql kodovanie mam tiež na utf-8“ tzn. po připojení k databázi zavoláš mysql_query("SET NAMES 'utf8'")? |
||
tito100 Profil |
#6 · Zasláno: 13. 1. 2010, 13:48:56 · Upravil/a: tito100
tak som to skontroloval. všade mam utf-8 . pridal som ešte aj hlavičku do toho php suboru. aj do ajax odosielania. stale nepomohlo. dokonca som spravil funkciu na odstranenie diakritiky cez javascriptt. a zistil ze diakritika tu nehra ziadnu rolu. ci tam je. alebo nie. stale je ta premenna poslana cez ajax cez metodu GET divne zakodovana. na stranke sa však zobrazuje spravne. ale v DB je zakodovana a tak nemožem normalne vyhladavat
[edit] vyskúšam. zatial dakujem :-) |
||
tito100 Profil |
#7 · Zasláno: 13. 1. 2010, 13:52:44
ja ti moc dakujem. vyriešene. problem bol v tom :
tzn. po připojení k databázi zavoláš mysql_query("SET NAMES 'utf8'")? ešte raz dakujem |
||
Časová prodleva: 14 let
|
0