/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Ajax Programmør ? Kig her ..
Fra : Mads


Dato : 05-01-07 17:42

Heej Ajax Programmør ..

Mig og en kammerat, er igang med at udvikle et "chat" system.
Og det har vi bygget i Ajax, men for at vi kan bruge html tags,
til smiley'er, har vi måttet erstatte createTextNode med innerHtml,
vi bruger Plastic Shore Ajax Chatten som template, grunden til vi skiftede
var vi ville have smiley'er med ..

Dette er vores script kode:
var GetChaturl = "getChatData.php";
var SendChaturl = "sendChatData.php";
var lastID = -1;
window.onload = initJavaScript;

function initJavaScript() {
document.forms['chatForm'].elements['chatbarText'].setAttribute('autocomplete','off');//this non standard attribute prevents firefox' autofill function to clashwith this script checkStatus(''); //sets the initial value and state of the input comment checkName(); //checks the initial value of the input name receiveChatText(); //initiates the first data query}function receiveChatText() { if (httpReceiveChat.readyState == 4 || httpReceiveChat.readyState == 0) { httpReceiveChat.open("GET",GetChaturl + '?lastID=' + lastID +'&rand='+Math.floor(Math.random() * 1000000), true); httpReceiveChat.onreadystatechange = handlehHttpReceiveChat; httpReceiveChat.send(null); }}function handlehHttpReceiveChat() { if (httpReceiveChat.readyState == 4) { results = httpReceiveChat.responseText.split('---'); //the fields areseperated by --- if (results.length > 2) { for(i=0;i < (results.length-1);i=i+4) { //goes through the result onemessage at a time insertNewContent(results[i+1],results[i+2],results[i+3]); //insertsthe new content into the page } lastID = results[results.length-4]; } setTimeout('receiveChatText();',1000); //executes the next data query in4 seconds }}function insertNewContent(liName,liText,liBid) { insertO = document.getElementById("outputList");// HVORN DEN SER UD NU !: <-------------- HER ! document.getElementById('chatoutput').innerHTML +="<a target=\"right\"href=\"../profil.php?id="+liBid+"\"><b>P</b></a><span class=\"graa\">"+liName + "Siger:</span><br /><span class='hvid'>" + liText + "<br/></span><br>";// HVORN DEN SÅ UD FØR !: <--------------- HER ! insertO = document.getElementById("outputList"); oLi = document.createElement('div'); oLi.setAttribute('className','hvid'); //for IE's sake oLi.setAttribute('class','hvid'); oSpan = document.createElement('span'); oSpan.setAttribute('className','graa'); //for IE's sake oSpan.setAttribute('class','graa'); oName = document.createTextNode(liName+'siger: '); oBr = document.createElement('br'); oText = document.createTextNode(liText); oSpan.appendChild(oName); oLi.appendChild(oBr); oLi.appendChild(oSpan); oLi.appendChild(oText); insertO.insertBefore(oLi, insertO.firstChild);}function sendComment() { currentChatText = document.forms['chatForm'].elements['chatbarText'].value; if (currentChatText != '' & (httpSendChat.readyState == 4 ||httpSendChat.readyState == 0)) { currentName = document.forms['chatForm'].elements['name'].value; param = 'n='+ currentName+'&c='+ currentChatText; httpSendChat.open("POST", SendChaturl, true); httpSendChat.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); httpSendChat.onreadystatechange = handlehHttpSendChat; httpSendChat.send(param); document.forms['chatForm'].elements['chatbarText'].value = ''; } else { setTimeout('sendComment();',1000); }}function handlehHttpSendChat() { if (httpSendChat.readyState == 4) { receiveChatText(); //refreshes the chat after a new comment has beenadded (this makes it more responsive) }}function checkStatus(focusState) { currentChatText = document.forms['chatForm'].elements['chatbarText']; oSubmit = document.forms['chatForm'].elements['submit']; if (currentChatText.value != '' || focusState == 'active') { oSubmit.disabled = false; } else { oSubmit.disabled = true; }}function checkName() { currentName = document.forms['chatForm'].elements['name']; if (currentName.value == '') { currentName.value = 'guest_'+ Math.floor(Math.random() * 10000); }}function getHTTPObject() { var xmlhttp; /*@cc_on @if (@_jscript_version >= 5) try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } @else xmlhttp = false; @end @*/ if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { try { xmlhttp = new XMLHttpRequest(); } catch (e) { xmlhttp = false; } } return xmlhttp;}var httpReceiveChat = getHTTPObject();var httpSendChat = getHTTPObject();Håber det kan hjælpe lidt ..Problemet med at vi bruger innerhtml er at den ikke kan opdatere af sigselv, kun når det er siden genindlæses ..Hvad skal vi gøre for at kan bruge "html" tags i chattens output og at denstadig opdatere af sig selv ?Vh.Mads .--------------------------------------------------------------------------------Jeg beskyttes af den gratis SPAMfighter til privatbrugere.Den har indtil videre sparet mig for at få 3590 spam-mailsBetalende brugere får ikke denne besked i deres e-mails.Hent en gratis SPAMfighter her.


 
 
Mads (05-01-2007)
Kommentar
Fra : Mads


Dato : 05-01-07 17:49

Ups troede at koden viste sig rigtigt .. Men hvis det ikke er til at kan
adskille, så send mig lige en mail.
Så kan jeg sende filen som vedhæftet.
Er ny i Nyhedsgrupperne ..

Vh.
Mads.

--------------------------------------------------------------------------------
Jeg beskyttes af den gratis SPAMfighter til privatbrugere.
Den har indtil videre sparet mig for at få 3590 spam-mails
Betalende brugere får ikke denne besked i deres e-mails.
Hent en gratis SPAMfighter her.



Christian Joergensen (06-01-2007)
Kommentar
Fra : Christian Joergensen


Dato : 06-01-07 13:04

"Mads" <mads@4701.dk> writes:

> Ups troede at koden viste sig rigtigt .. Men hvis det ikke er til at kan
> adskille, så send mig lige en mail.
> Så kan jeg sende filen som vedhæftet.
> Er ny i Nyhedsgrupperne ..

Smid evt. koden op et sted saa vi kan se den.

--
Christian Joergensen | Linux, programming or web consultancy
http://www.razor.dk | Visit us at: http://www.gmta.info

thomas jürgensen (06-01-2007)
Kommentar
Fra : thomas jürgensen


Dato : 06-01-07 16:44

MADS HER .. (MIN FARS MAIL) ..

var GetChaturl = "getChatData.php";
var SendChaturl = "sendChatData.php";
var lastID = -1;
window.onload = initJavaScript;

function initJavaScript() {
document.forms['chatForm'].elements['chatbarText'].setAttribute('autocomplete','off');
//this non standard attribute prevents firefox' autofill function to clash
with this script
checkStatus(''); //sets the initial value and state of the input comment
checkName(); //checks the initial value of the input name
receiveChatText(); //initiates the first data query
}




function receiveChatText() {
if (httpReceiveChat.readyState == 4 || httpReceiveChat.readyState == 0)
{
httpReceiveChat.open("GET",GetChaturl + '?lastID=' + lastID +
'&rand='+Math.floor(Math.random() * 1000000), true);
httpReceiveChat.onreadystatechange = handlehHttpReceiveChat;
httpReceiveChat.send(null);
}
}


function handlehHttpReceiveChat() {
if (httpReceiveChat.readyState == 4) {
results = httpReceiveChat.responseText.split('---'); //the fields are
seperated by ---
if (results.length > 2) {
for(i=0;i < (results.length-1);i=i+4) { //goes through the result
one message at a time
insertNewContent(results[i+1],results[i+2],results[i+3]);
//inserts the new content into the page
}
lastID = results[results.length-4];
}
setTimeout('receiveChatText();',1000); //executes the next data query in
4 seconds
}
}

function insertNewContent(liName,liText,liBid) {
insertO = document.getElementById("outputList");
document.getElementById('chatoutput').innerHTML +="<b><a target='right'
href='../profil.php?id="+liBid+"'>P</a></b><span class='graa'>"+ liName +
"Siger:</span><br /><span class='hvid'>" + liText + "<br /></span><br>";
}

function sendComment() {
currentChatText =
document.forms['chatForm'].elements['chatbarText'].value;
if (currentChatText != '' & (httpSendChat.readyState == 4 ||
httpSendChat.readyState == 0)) {
currentName = document.forms['chatForm'].elements['name'].value;
param = 'n='+ currentName+'&c='+ currentChatText;
httpSendChat.open("POST", SendChaturl, true);
httpSendChat.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
httpSendChat.onreadystatechange = handlehHttpSendChat;
httpSendChat.send(param);
document.forms['chatForm'].elements['chatbarText'].value = '';
} else {
setTimeout('sendComment();',1000);
}
}

function handlehHttpSendChat() {
if (httpSendChat.readyState == 4) {
receiveChatText(); //refreshes the chat after a new comment has been
added (this makes it more responsive)
}
}

function checkStatus(focusState) {
currentChatText = document.forms['chatForm'].elements['chatbarText'];
oSubmit = document.forms['chatForm'].elements['submit'];
if (currentChatText.value != '' || focusState == 'active') {
oSubmit.disabled = false;
} else {
oSubmit.disabled = true;
}
}

function checkName() {
currentName = document.forms['chatForm'].elements['name'];
if (currentName.value == '') {
currentName.value = 'guest_'+ Math.floor(Math.random() * 10000);
}
}

function getHTTPObject() {
var xmlhttp;
/*@cc_on
@if (@_jscript_version >= 5)
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
@else
xmlhttp = false;
@end @*/
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp = false;
}
}
return xmlhttp;
}

var httpReceiveChat = getHTTPObject();
var httpSendChat = getHTTPObject();

eller her:

www.2cool4you.dk/ajax.txt

Det er den nye kode vi bruger, men den opdatere ikke sig selv, da det er
GetElementByid, hvad er løsningen til dette ? :)



andy (06-01-2007)
Kommentar
Fra : andy


Dato : 06-01-07 16:45

Christian Joergensen skrev:
> "Mads" <mads@4701.dk> writes:
>
>> Ups troede at koden viste sig rigtigt .. Men hvis det ikke er til at kan
>> adskille, så send mig lige en mail.
>> Så kan jeg sende filen som vedhæftet.
>> Er ny i Nyhedsgrupperne ..
>
> Smid evt. koden op et sted saa vi kan se den.
>
Til at vise koden kan bruge http://rafb.net/paste/ eller andre af denne
type. Men husk at de bliver slættet efter en tid.

Mads (07-01-2007)
Kommentar
Fra : Mads


Dato : 07-01-07 17:12

Koden ligger heroppe:

www.2cool4you.dk/ajax.txt

:)

Vh.
Mads.

--------------------------------------------------------------------------------
Jeg beskyttes af den gratis SPAMfighter til privatbrugere.
Den har indtil videre sparet mig for at få 3697 spam-mails
Betalende brugere får ikke denne besked i deres e-mails.
Hent en gratis SPAMfighter her.



Martin (07-01-2007)
Kommentar
Fra : Martin


Dato : 07-01-07 21:48

Mads wrote:
> Heej Ajax Programmør ..
>
> Mig og en kammerat, er igang med at udvikle et "chat" system.
> Og det har vi bygget i Ajax, men for at vi kan bruge html tags,
> til smiley'er, har vi måttet erstatte createTextNode med innerHtml,
> vi bruger Plastic Shore Ajax Chatten som template, grunden til vi skiftede
> var vi ville have smiley'er med ..

Lav smiley koden i PHP dokumentet, som et ganske alm <img> tag?


>
> Dette er vores script kode:
> var GetChaturl = "getChatData.php";
> var SendChaturl = "sendChatData.php";
> var lastID = -1;
> window.onload = initJavaScript;

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste