• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

    AJAX初級聊天室代碼

    來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:52:46
    文檔

    AJAX初級聊天室代碼

    AJAX初級聊天室代碼:很早就想發(fā)出來了,一直以來都沒什么時間,今天偷個空先把代碼發(fā)上面,明天來寫注釋.還是那句話,AJAX是一種應(yīng)用,而不是一個專門的技術(shù),我認(rèn)為做做DEMO要的是速度,要讓看的人好理解,而JS是最基本的WEB語言,相信比起其他的語言來說,要明了很多,所以我還是選擇用J
    推薦度:
    導(dǎo)讀AJAX初級聊天室代碼:很早就想發(fā)出來了,一直以來都沒什么時間,今天偷個空先把代碼發(fā)上面,明天來寫注釋.還是那句話,AJAX是一種應(yīng)用,而不是一個專門的技術(shù),我認(rèn)為做做DEMO要的是速度,要讓看的人好理解,而JS是最基本的WEB語言,相信比起其他的語言來說,要明了很多,所以我還是選擇用J

    很早就想發(fā)出來了,一直以來都沒什么時間,今天偷個空先把代碼發(fā)上面,明天來寫注釋.

    還是那句話,AJAX是一種應(yīng)用,而不是一個專門的技術(shù),我認(rèn)為做做DEMO要的是速度,要讓看的人好理解,而JS是最基本的WEB語言,相信比起其他的語言來說,要明了很多,所以我還是選擇用JS寫前后臺代碼.但并不代表我不會其他的語言,程序關(guān)鍵還是在于自我對實現(xiàn)的想法,而用什么語言,好比選擇工具一樣,我用菜刀可以做,用瑞士軍刀也可以做,關(guān)鍵是要看在什么場合.

    再就AJAX實際上首要考慮的是人性化,人機(jī)交互的便利才是他的優(yōu)勢,否則我還是勸你使用FLASH的AS來的更快.

    記住這個詞--認(rèn)知潛意識.千萬不要讓用戶感覺到操作的不適應(yīng),你也一定要想在用戶的前面,也許這就是程序不智能的位置.
    如果你喜歡的話可以繼續(xù)開發(fā)這個東西,更希望你能夠注明一下轉(zhuǎn)載出處,我會覺得非常地高興,并寫出更多更好的東西.

    首頁HTML代碼:請保存為index.html
    程序代碼 程序代碼
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>Chating Beta_0.3.23</title>
    <link href="images/chatstyle.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="images/chat.js"></script>
    <script type="text/javascript" src="images/display.js"></script>
    </head>
    <body>
    <div id="loadifo"></div>
    <div class="header">Chating Beta_0.3.23</div>
    <div id="outs"><div id="outmain"><div id="chatmain"></div></div></div>
    <div class="in">昵稱:
        <input class="names" name="named" type="text" />
        <span id="inputput" class="inputput" onmouseover="overInput(this)" onmouseout="outInput(this)"><input class="inputs" name="inputs" type="text" title="提交對話
    快捷鍵:Enter或Ctrl + Enter
    清除
    快捷鍵:Ctrl + Delete" /><input class="left" type="button" onmouseover="lrover(this)" value=" " onmouseout="lrout(this)" onclick="preChat();" title="向前一條對話記錄
    快捷鍵:↑" /><input class="right" onmouseover="lrover(this)" type="button" value=" " onmouseout="lrout(this)" onclick="nextChat();" title="向后一條對話記錄
    快捷鍵:↓" />
        <input id="btn" class="btn" type="image" src="images/rest.gif" onmouseover="overBtn(this)" onmouseout="outBtn(this)" onclick="doUsingPost();" title="提交對話
    快捷鍵:Enter或Ctrl + Enter" />
        </span>
        <span id="errors"></span>
    </div>
    </body>
    </html>

    CSS文件:請保存為 images/chatstyle.css
    程序代碼 程序代碼
    body{
        margin: 0px;
        padding: 0px;
        font-size: 9pt;
        background-image: url(JD112.jpg);
        background-position: center center;
    }
    #outmain{
        height: 400px;
        font-size: 9pt;
        overflow-y: scroll;
        overflow-x: hidden;
        SCROLLBAR-ARROW-COLOR:#FF9900;
        SCROLLBAR-FACE-COLOR:#FFF9E1;
        SCROLLBAR-DARKSHADOW-COLOR:#FF9900;
        SCROLLBAR-HIGHLIGHT-COLOR:#FFFFFF;
        SCROLLBAR-3DLIGHT-COLOR:#FF9900;
        SCROLLBAR-SHADOW-COLOR:#FFFFFF;
        SCROLLBAR-TRACK-COLOR:#FFF9E1;
    }
    #chatmain{}
    #outs{
        width: 540px;
        margin-right: auto;
        margin-left: auto;
        padding: 10px;
        margin-top: 10px;
        margin-bottom: 10px;
        background-color: #FFF9E1;
        border: 1px solid #AAA;
        clear: both;
    }
    .in{
        text-align: center;
    }

    .names{
        border: 1px solid #AAA;
        background-color: #FFF9E1;
        width: 80px;
        height: 19px;
        line-height: 19px;
    }
    #loadifo {
        position:absolute;
        top:100px;
        z-index:1;
        right: 10px;
        line-height: 21px;
    }
    .header{
        height: 60px;
        background-color: #000;
        text-align: center;
        color: #FFF;
        font-weight: bold;
        line-height: 60px;
        font-family: Tahoma;
        font-size: 12pt;
        float: left;
        width: 100%;
        margin-bottom: 20px;
        filter: Alpha(Opacity=50);
        opacity: 0.5;
    }
    /*效果*/
    .btn{
        border: 1px solid #AAA;
        position: absolute;
        margin-top: 2px;
    }
    .inputs{
        font-size: 9pt;
        background-image: url(input.png);
        background-repeat: no-repeat;
        width: 295px;
        line-height: 21px;
        height: 21px;
        margin: 0px;
        padding: 0px;
        border: 1px solid #AAA;
    }
    .left,.right{
        background-repeat: no-repeat;
        background-position: center center;
        cursor:pointer;
        border-top-style: none;
        border-right-style: none;
        border-bottom-style: none;
        border-left-style: none;
        background-color: #FFF;
        height: 23px;
        width: 23px;
    }
    .left{
        background-image: url(l1.gif);
    }
    .right{
        background-image: url(r1.gif);
    }

    JS主文件: 請保存為 images/chat.js
    程序代碼 程序代碼
    var nowNum = "m"
    function getId(objId){
        return document.getElementById(objId)
    }
    function getName(objName){
        return document.getElementsByName(objName)[0]
    }
    var xmldoc
    function createxmldoc(){
        if(window.XMLHttpRequest){
            xmldoc = new XMLHttpRequest();
            if(xmldoc.overrideMimeType){
                    xmldoc.overrideMimeType("text/xml");
            }
        }else if(window.ActiveXObject){
            try{
                xmldoc = new ActiveXObject("Msxml4.XMLHTTP");
            }catch(e){
                try{
                    xmldoc = new ActiveXObject("Msxml3.XMLHTTP");
                }catch(e){
                    try{
                        xmldoc = new ActiveXObject("Msxml2.XMLHTTP");
                    }catch(e){
                        try{
                            xmldoc = new ActiveXObject("Microsoft.XMLHTTP");
                        }catch(e){}
                    }
                }
            }
        }
        if(!xmldoc){
            return false;
        }
    }
    function createQueryString(names){
        var conts = getName(names).value
        if(conts != ""){
            if(conts == "clear"){
                getId("chatmain").innerHTML = ""
                clean()
                focs()
                return false
            }else{
                return conts
            }
        }else{
            return false
        }
    }
    function doUsingGet(){
        xmldoc = false
        createxmldoc()
        var url = "chat.asp?clien="+nowNum+"&timeStamp="+new Date().getTime();
        xmldoc.open("GET",url,true);
        xmldoc.onreadystatechange = CheckState;
        xmldoc.setRequestHeader("Content-Type","text/xml;charset=GB2312;");
        xmldoc.send(null);
    }
    function doUsingPost(){
        createxmldoc()
        if(createQueryString("inputs")){
            if(createQueryString("named")){
                var named = "&named="+createQueryString("named")
            }else{
                var named = ""    
            }
            if(createQueryString("inputs") == "cls"){
                nowNum = "m"
            }
            var url = "chat.asp?clien="+nowNum+"&cont="+createQueryString("inputs")+named+"&timeStamp="+new Date().getTime();
            xmldoc.open("GET",url,true);
            xmldoc.onreadystatechange = CheckState;
            xmldoc.setRequestHeader("Content-Type","text/xml;charset=GB2312;");
            xmldoc.send(null);
            getId("errors").innerHTML = ""
            addChat(createQueryString("inputs"));
            clean()
            focs()
        }else{
            getId("loadifo").innerHTML = "請輸入對話內(nèi)容!"    
            focs()
        }
    }
    function CheckState(){
        if(xmldoc.readyState == 1){
            //getId("loadifo").innerHTML = "連接服務(wù)器"
            }
        else if(xmldoc.readyState == 2){
            //getId("loadifo").innerHTML = "開始加載數(shù)據(jù)"
            }
        else if(xmldoc.readyState == 3){
            //getId("loadifo").innerHTML = "正在加載數(shù)據(jù)"
            }
        else if(xmldoc.readyState == 4){
            if(xmldoc.status == 200){
                results()
            }
            else{
                getId("loadifo").innerHTML = "錯誤"+xmldoc.status;
                focs()
            }
        }
    }
    function results(){
        resXml()
    }
    function resXml(){
        var res = xmldoc.responseXML.documentElement;
        var resLen = res.getElementsByTagName("items").length
        if(getTag(res,0,"num") != nowNum){
            //alert(xmldoc.responseXML.xml)
            nowNum = getTag(res,0,"num")
            for(var i=0; i<resLen; i++){
                var useName = getTag(res,i,"name")
                var useMag = getTag(res,i,"conts")
                var useIp = getTag(res,i,"ip")
                if(nowNum != "0" && useMag != ""){
                    if(useName != ""){
                        var lis = "用戶"+ useName + "說:" + useMag + " ["+ useIp + "]"
                    }else{
                        var lis = "用戶 ["+ useIp + "] 說:" + useMag
                    }
                }else{
                    var lis = "用戶 ["+ useIp + "] 進(jìn)入聊天室!"
                }
                //var newp = document.createElement("p")
                //newp.innerHTML = lis
                //getId("chatmain").appendChild(newp)
                getId("chatmain").innerHTML += lis + "<br />"
            }
            innerSize()
        }
    }
    function getTag(response,i,objTagName){
        try{
            var nodeV = response.getElementsByTagName(objTagName)[i].firstChild.nodeValue;
        }catch(e){
            var nodeV = ""
        }
        return nodeV;
    }
    var overs
    function innerSize(){
        if(overs != 1){
            if(getId("chatmain").offsetHeight < getId("outmain").offsetHeight){
                getId("chatmain").style.marginTop = getId("outmain").offsetHeight - getId("chatmain").offsetHeight +"px";
            }else{
                getId("chatmain").scrollIntoView(false)    
            }
        }
    }
    window.onload = function(){
        getId("outs").onmousedown = function(){
            overs = 1
        }
        getId("outs").onmouseout = function(){
            overs = 0
            focs()
        }
        getName("inputs").onkeydown = function(e){
            if(document.all){
                var Keys = event.keyCode;    
            }else{
                var Keys = e.which;
            }
            //alert(Keys)
            if(Keys == "38"){
                preChat()
            }else if(Keys == "40"){
                nextChat()
            }else if(event.ctrlKey && Keys == "13"){
                doUsingPost()
            }else if(event.ctrlKey && Keys == "46"){
                clean()
            }
        }

    }
    setInterval("doUsingGet()",1000)

    JS輔助文件:請保存為 images/display.js
    程序代碼 程序代碼
    function overInput(a){
        getId("btn").style.border = "1px solid #54ce43"
        getId("inputs").style.border = "1px solid #54ce43"
        focs()
    }
    function outInput(a){
        getId("btn").style.border = "1px solid #AAA"
        getId("inputs").style.border = "1px solid #AAA"
        focs()
    }
    function overBtn(a){
        a.src = "images/hover.gif"
    }
    function outBtn(a){
        a.src = "images/rest.gif"
    }
    function lrover(a){
        a.style.backgroundColor = "#EEE"
    }
    function lrout(a){
        a.style.backgroundColor = "#FFF"    
    }
    function focs(){
        getName("inputs").focus();
    }
    function clean(){
        getName("inputs").value = ""
    }
    var chats = new Array()
    var chatStart
    function addChat(strChat){
        if(chats.length > 199){
            chats.shift()
        }
        chats.push(strChat)
        chatStart = chats.length
    }
    function preChat(){
        if(chatStart && chatStart >= 1){
            if(chatStart == 1){
                getName("inputs").value = chats[0]
                chatStart = 0.5
            }else{
                chatStart -= 1
                getName("inputs").value = chats[chatStart]
            }
        }
        getId("loadifo").innerHTML = chatStart+","+chats.length
    }
    function nextChat(){
        if(chatStart && chatStart < chats.length && chats.length > 1){
            if(chatStart == 0.5){
                chatStart = 1
            }else if(chatStart == chats.length - 1){
                chatStart = chats.length - 1
            }else{
                chatStart += 1
            }
            getName("inputs").value = chats[chatStart]
        }
        getId("loadifo").innerHTML = chatStart+","+chats.length
    }

    主ASP程序文件:請保存為chat.asp
    程序代碼 程序代碼
    <%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%><%
        Session.CodePage = 936
        Response.ContentType = "application/xml"
        Response.Expires = 0
    %><%
    function repla(str){
        str = str.replace(/\&/g, "&");
        str = str.replace(/\>/g, ">");
        str = str.replace(/\</g, "<");
        str = str.replace(/\"/g, """);
        str = str.replace(/\'/g, "'");
        return str;
    }

    var useIp = Request.ServerVariables("REMOTE_ADDR")
    if(!Application("counts")){
        Application("counts") = 0
    }
    if(Request("cont").Count != 0){
        Application.Lock()
            if(Application("counts") < 21){        
                Application("counts") += 1
            }else if(Application("counts") >= 21){
                Application("counts") = 1
            }
            var Cnum = Application("counts")
            var Msgs = repla(Server.HTMLEncode(Request("cont")))
            Application("ips" + Cnum) = useIp +""
            Application("msgs" + Cnum) = Msgs +""
            if(Request("named").Count != 0){
                var names = Request("named")
            }else{
                var names = ""
            }
            Application("names" + Cnum) = names +""
        Application.UnLock()
    }
    if(Request("cont") == "cls"){
        Application.Contents.RemoveAll()
    }
    %><?xml version="1.0" encoding="gb2312" ?>
    <ppl>
        <num><%=Application("counts")%></num>
        <%
        if(Request("clien") == "m"){
        %>
        <items>
            <ip><%=useIp%></ip>
        </items>
        <%
        }else if(Request("clien") < Application("counts")){
            for(var i=Request("clien"); i<Application("counts"); i++){
                s = Number(i)+1
                var useName = Application("names" + s)
                var useMsg = Application("msgs" + s)
                var useIp = Application("ips" + s)
        %>
        <items>
            <aaa><%=Request("clien")%> <%=s%></aaa>
            <bbb><%=Application("counts")%></bbb>
            <name><%=useName%></name>
            <conts><%=useMsg%></conts>
            <ip><%=useIp%></ip>
        </items>
        <%
            }
        }else if(Request("clien") > Application("counts")){
            for(var i=Request("clien"); i<21; i++){
                var useName = Application("names" + i)
                var useMsg = Application("msgs" + i)
                var useIp = Application("ips" + i)
        %>
        <items>
            <name><%=useName%></name>
            <conts><%=useMsg%></conts>
            <ip><%=useIp%></ip>
        </items>
        <%
            }
            for(var m=1; m<=Application("counts"); m++){
                var useNameM = Application("names" + m)
                var useMsgM = Application("msgs" + m)
                var useIpM = Application("ips" + m)
        %>
        <items>
            <name><%=useNameM%></name>
            <conts><%=useMsgM%></conts>
            <ip><%=useIpM%></ip>
        </items>
        <%
            }
        }else if(Request("clien") == Application("counts")){

        }
        %>
    </ppl>

    全部程序打包下載: 點擊下載

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    AJAX初級聊天室代碼

    AJAX初級聊天室代碼:很早就想發(fā)出來了,一直以來都沒什么時間,今天偷個空先把代碼發(fā)上面,明天來寫注釋.還是那句話,AJAX是一種應(yīng)用,而不是一個專門的技術(shù),我認(rèn)為做做DEMO要的是速度,要讓看的人好理解,而JS是最基本的WEB語言,相信比起其他的語言來說,要明了很多,所以我還是選擇用J
    推薦度:
    標(biāo)簽: 聊天 聊天室 代碼
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 亚洲精品国产精品乱码视色| 午夜不卡久久精品无码免费| 亚洲午夜精品久久久久久app | 国产精品莉莉欧美自在线线| 久久久无码精品亚洲日韩软件| 久久er热视频在这里精品| 中文字幕精品一区二区精品| 亚洲愉拍自拍欧美精品| 2022国产精品不卡a| 亚洲av午夜成人片精品网站| 久久99精品久久久久久秒播 | 国产91精品一区二区麻豆网站 | 欧美精品人人做人人爱视频| 欧美大片日韩精品| 99精品视频在线观看| 国产午夜精品免费一区二区三区| 亚洲国产精品视频| 蜜桃麻豆www久久国产精品 | 最新国产の精品合集| 国产精品91av| 成人区人妻精品一区二区不卡网站 | 日韩欧美精品不卡| 国产在线精品一区二区不卡| 国产精品亲子乱子伦xxxx裸| 国产成人精品免费视| 亚洲精品高清在线| 久久久久九国产精品| 久久久久久久久久久免费精品| 精品日韩欧美国产| 久久久久国产精品嫩草影院| 精品人妻少妇一区二区三区| 国产精品嫩草影院久久| 99九九精品免费视频观看| 99久久国产综合精品五月天喷水 | 久久99国产综合精品女同| 久久r热这里有精品视频| 18国产精品白浆在线观看免费| 激情亚洲一区国产精品| 国产成人精品无码片区在线观看| 国内精品久久久久久99蜜桃| 国产精品视频二区不卡|