Autor | Zpráva | ||
---|---|---|---|
niceworld Profil * |
#1 · Zasláno: 6. 7. 2011, 20:08:57
Ahoj mam dlouhodobý problém stáhl jsem ajax chat ale bohužel mi furt blbne čeština nepotřebné věci jsem odstranil. ale už si nevím rady děkuji za jakoukoliv pomoc.
chat form <?include("config.php");?> <script type="text/javascript" src="chatclient.js"></script> <script language="JavaScript"> <!-- function setsmiley(what){ tmp=document.getElementById("mytext"); tmp.value = tmp.value+" "+what+" "; tmp.focus(); } //--> </script> <table><tr><td><div id="chatpane"><div id="chatbuffer"></div></div></td></tr></table> <table><tr><td><input style="width: 190px;" id="mytext" name="mytext" type="text" onFocus="textFocus=true" onBlur="textFocus=false"></td></tr></table> <script type="text/javascript">startChat();</script> chatclient.js <script> var isFirefox; var isIE; var timeout; var pingtimeout; var textFocus = true; var starsadded = false; var timedout = 0; var requestsent = 0; var chatsent = 0; var pingRate = 1000 * 30; var refreshRate = 1000 * 2; var t = 0; var update_period = 3; var throttle_back = 60; var lastpost = 0; function getAjax() { var xmlhttp; if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { try { xmlhttp = new XMLHttpRequest(); } catch (e) { xmlhttp = false; } } return xmlhttp; } function sniff() { var ff = "Netscape"; var ie = "Microsoft Internet Explorer"; isFirefox = ( navigator.appName == ff ); isIE = (navigator.appName == ie ); } function captureReturn( event ) { if( isIE ) { event = window.event; } if( event.keyCode == 13 ) { postText(); if( isIE ) { event.returnValue = false; } else { event.preventDefault(); } } charCount(); } function scrollChatPane() { pane = document.getElementById( "chatpane" ); while( pane.scrollTop < pane.scrollHeight - pane.offsetHeight ) { pane.scrollTop = pane.scrollTop + 10; } } function showLoadScreen() { var loading = "<div style=\"text-align:center;\"><h4><img src=styles/loader.gif><br>Načítání chatu...</h4></div>"; chat = document.getElementById( "chatbuffer" ); chat.innerHTML = loading; } function setTimers() { timeout = window.setTimeout( "fetch()", refreshRate ); } function fetch() { window.clearTimeout( timeout ); fetchBufferText(); if(t++ % update_period) { fetchUserList(); } if( t - lastpost > throttle_back ) { refreshRate = 2000; update_period = 2; } else { refreshRate = 1000; update_period = 3; } if( timedout != 1 ) { setTimers(); } } function fetchUserList() { fetchBufferText(); } function fetchBufferText() { url = 'buffertext.php'; req = getAjax(); req.onreadystatechange = function(){ if( req.readyState == 4 && req.status == 200 ) { obj = document.getElementById( "chatbuffer" ); obj.innerHTML = req.responseText; scrollChatPane(); } } req.open( 'GET', url , true ); req.send( null ); } function postText() { chatbox = document.getElementById( "mytext" ); chat = escape(chatbox.value); chatbox.value = ''; if(chat.length == 0 ) {return; } url = 'posttext.php?t=' + chat ; req = getAjax(); req.onreadystatechange = function(){ if( req.readyState == 4 && req.status == 200 ) { fetch(); } } req.open( 'GET', url, true ); req.send( null ); lastpost = t; } function startChat() { sniff(); showLoadScreen(); setTimers(); if( isFirefox ) { mytext = document.getElementById( "mytext" ); } mytext.focus(); mytext.onkeypress = captureReturn; } </script> zápis <? include("config.php"); session_register("idowner"); $idonline2=$idowner; $chattext=$_GET['t']; $chat="chatperson"; $nametable="$chat$myid$idonline2"; $nametable2="$chat$idonline2$myid"; $sloupec1="owner"; $sloupec2="date"; $sloupec3="text"; $sloupec4="status"; $status="no"; $date=StrFTime("%d.%m.%Y %H:%M:%S", Time()); MySQL_Query("INSERT INTO $nametable($sloupec1,$sloupec2,$sloupec3,$sloupec4) VALUES('".$myid."','".$date."','".$chattext."','".$status."')"); MySQL_Query("INSERT INTO $nametable2($sloupec1,$sloupec2,$sloupec3,$sloupec4) VALUES('".$myid."','".$date."','".$chattext."','".$status."')"); $chatperson="chatperson_my"; $chatpersontable="$chatperson$idonline2"; $numzero="0"; $numtwo="2"; mysql_query("UPDATE $chatpersontable SET status = '$numtwo' WHERE status = '$numzero' and owner='$myid'"); ?> |
||
niceworld Profil * |
#2 · Zasláno: 6. 7. 2011, 20:10:33
zápis potřebuji v utf-8
|
||
niceworld Profil * |
#3 · Zasláno: 6. 7. 2011, 20:13:56
jo zápis je posttext.php
|
||
Witiko Profil |
#4 · Zasláno: 6. 7. 2011, 21:41:21 · Upravil/a: Witiko
niceworld:
Poslal jsi sem hodně nedůležitého balastu. :-) Potřeba je uvést v hlavičce HTML souboru: <meta charset="utf-8"> A do php souboru přihodit před ostatní MySQL žádosti: mysql_query("SET NAMES utf8"); Tak bude zajištěné, že prohlížeč bude text louskat pomocí algoritmu utf-8 a MySQL bude texty v daném kódování text předávat php scriptu. |
||
niceworld Profil * |
#5 · Zasláno: 6. 7. 2011, 21:44:29
mysql_query("SET NAMES utf8"); mam v configu
|
||
Darker Profil |
#6 · Zasláno: 6. 7. 2011, 22:08:07
Witiko:
„<meta charset="utf-8">“ Záleží, zda je dokument v HTML5. Pokud není, patří tam klasicky <meta http-equiv="content-type" content="text/html;charset=utf-8"> niceworld A co soubor který posílá data z chatu? header("Content-Type: text/plain; charset=utf-8"); |
||
niceworld Profil * |
#7 · Zasláno: 6. 7. 2011, 23:04:32
mohlo zato chat = escape(chatbox.value);
|
||
niceworld Profil * |
#8 · Zasláno: 6. 7. 2011, 23:05:09
na 135řádku v js
|
||
Witiko Profil |
#9 · Zasláno: 6. 7. 2011, 23:45:26 · Upravil/a: Witiko
Darker:
„Záleží, zda je dokument v HTML5. Pokud není, patří tam klasicky“ Ano i ne. Tady jde o to, že to tolik lidí psalo špatně, že prohlížeče začaly tento zkrácený zápis podporovat. Návrháři HTML5 zápis pouze vzali a standardizovali - snaží se totiž do HTML5 nacpat spoustu vizuálního cukříku (krátký !doctype , script tag nevyžadující type atribut atd.), nejspíš mimo jiné aby nalákali nováčky a zároveň odmazali část břímě na ramenou quirk módů. Pokud ti jde tedy o validátor, tak ten označí zkrácený zápis u HTML4 jako chybný. Nicméně co po stránce funkčnosti HTML5 jen standardizuje to, co prohlížeče již podporovaly, takže je to z dnešního hlediska jedno. Staré prohlížeče to podporují a nová specifikace to standardizuje.
niceworld: „mohlo zato chat = escape(chatbox.value);“ Ano, taková funkce (alespoň v úseku, který jsi sem vložil) není definovaná. Nejspíš jsi chtěl použít globální funkci encodeURI ? Pak mě ale udivuje, že vůbec něco fungovalo. Javascript měl po zavolání funkce postText() jako správný rebel vyhodit výjimku a odmítnout dále sloužit. Jen tak mimochodem máš v tom kódu řadu nedefinovaných proměnných.
|
||
_es Profil |
#10 · Zasláno: 7. 7. 2011, 07:53:06
Witiko:
> „mohlo zato chat = escape(chatbox.value);“ > Ano, taková funkce (alespoň v úseku, který jsi sem vložil) není definovaná. window.escape niceworld: Ak ide o obsah, ktorý sťahuješ cez XMLHttpRequest , teda súbory buffertext.php a posttext.php , tak pri takomto sťahovaní sú meta značky ignorované. Nastavenie kódovania musíš spraviť inak ako meta značkou.
V JS nemáš mnohé premenné definované - vytvárajú sa ti tak globálne vlastnosti - môže to robiť problémy. |
||
Witiko Profil |
#11 · Zasláno: 7. 7. 2011, 08:57:18 · Upravil/a: Witiko
_es:
Zajímavé, nikdy jsem na ní nenarazil. Nejspíš to bude tím, že jde o deprecated verzi encodeURIComponent() , která nezvládá ne-ASCII znaky z dom ECMAScriptu1, takže pro to nebyl důvod.
|
||
Časová prodleva: 4 dny
|
|||
peta Profil |
#12 · Zasláno: 11. 7. 2011, 10:59:03 · Upravil/a: peta
Witiko:
"nikdy jsem na ní nenarazil" Zkus si nekdy precist jakpsatweb.cz http://www.jakpsatweb.cz/javascript/zabudovane-funkce.html http://www.jakpsatweb.cz/javascript/priklady/escape.html http://www.jakpsatweb.cz/cestina.html PS. Moderatori, muzete na tu stranku cestina, uplne dole, jak je nadpis Překódování pridat odkaz na http://konieczny.be/unicode.html Docela sikovna utilitka, obcas to pouzivam. |
||
Witiko Profil |
#13 · Zasláno: 11. 7. 2011, 11:23:43
peta:
„Zkus si nekdy precist jakpsatweb.cz“ Opět opakuji, že užitečné DOM metody znám. Problém je v tom, že encodeURIComponent() dělá to samé a lépe. :-)
|
||
Časová prodleva: 13 let
|
0