Autor | Zpráva | ||
---|---|---|---|
serion Profil * |
#1 · Zasláno: 22. 8. 2007, 14:58:13
Zdravím. Pustil som sa do vytvárania maličkého ajaxchatu pre osobné účely, no narazil som na problém.
Mám klasický DIV s id = 'chatwindow'. V tomto DIVe by sa mali zobrazovať obrdžané správy, štruktúra je napríklad takáto: <?xml version="1.0"?> Po obdržaní (cez zápis do .txt súboru som si overil že prehliadač obdržal presne horeuvedené) by mala správy sformátovať a pridať táto funkcia:
Akonáhle ju však spustím, prehliadač obdrží správy v XML formáte no nič sa nedeje, v DIVe sa neobjavia. Neviete čo môže byť zle? S DOM som úplný začiatočník, takže je dosť možné že to bude nejaká prkotina, no trápi ma to už dva dni a neviem s s tým rady. Za odpoveď predom ďakujem. |
||
peta Profil |
#2 · Zasláno: 23. 8. 2007, 08:25:28
misto
.responseXML; pouzij .responseText a posli si to ve formatu a|b|c|d|e a|b|c|d|e a|b|c|d|e pak to das jako x = ... .responseText; alert(x) y = x.split("\ "); alert(y); alert(y[0]); z = y[0].split("|"); alert(z); alert(z[0]); No, nebude se ti to zpracovavat lepe? Jinak bych ti poradil, ze si kazdou vec z alertuj, jestli se to skutecne provedlo: newMessage.setAttribute('class', message_nodes[i].getAttribute('type') + '_message'); alert(newMessage.className); "Neviete čo môže byť zle?" Bez vypisuj JS konzoly nevime nic. Tazke bud odkaz na stranku nebo vypis z JS konzoly. |
||
souki Profil |
#3 · Zasláno: 23. 8. 2007, 09:57:04
peta
A co když někdo použije ve zprávě | ? |
||
peta Profil |
#4 · Zasláno: 23. 8. 2007, 14:00:26
souki
To si snad umi osetrit, ne? Treba pouzitim unicode entit. Pripominas mi phpRS2.2 :) Tam je SQL dotaz napsan tak, ze pokud do textu das apostrof, tak ti ukonci values. Zadne htmlspecialchars nebo tak tam neni. Novy 2.8 jsem nezkoumal. |
||
souki Profil |
#5 · Zasláno: 23. 8. 2007, 14:03:40
peta
Já na tohle třeba používám json_encode. Přijde mi to daleko univerálnější a jednodušší na práci na straně JS |
||
peta Profil |
#6 · Zasláno: 23. 8. 2007, 14:11:02
souki
tak, ono je mozne to prevest na base64 nebo base16. Tim padem uz nemusis resit regularni vyrazy a pod, ale zase se ti stava zprava necitelna. |
||
ah01 Profil |
#7 · Zasláno: 23. 8. 2007, 15:27:52
serion
Už na první pohled máš chybu tady: var messages = xmldoc.getElementsByTagName('messages'); getElementsByTagName to množné číslo naznačuje, že tato metoda vrací pole (i v případě že se ten prvek v dokumentu nalézá jen jednou). Takže proměnná mesages je pole, ale přistupuješ k ní jako k DOMElemnetu. Navíc by ti stačilo pouze: var message_nodes = xmldoc.getElementsByTagName('message'); Dál už jsem to nezkoumal, takže tam můžeš mít i další chyby, tohle byla první na kterou jsem narazil. souki Já bych to osobně řešil taky pomocí JSON komunikace místo XML, ale pokud chce používat XML proč mu nutit něco jiného. peta "ono je mozne to prevest na base64 nebo base16" Proč to dělat jednoduše, když to de složitě :-) |
||
Časová prodleva: 17 let
|
0