4

所以我开始了一个项目,我想在其中进行在线 ajax 聊天,但我不想使用 jQuery JSON、COMET 等。我正在寻找纯 javascript,没有库没有框架。

好消息是我已经进行了聊天并且工作正常。我为什么要发这个帖子?因为我根本找不到任何用于长轮询的纯 JavaScript 解决方案。目前我正在使用 setInterval 方法来“要求”数据库发送数据库中的任何内容。现在,每当我收到响应时,如何执行我的 ajax 请求?(长轮询)。

请记住,我不是在寻找 jQuery 解决方案或你有什么。我使用的是纯 JavaScript 和 PHP。没有框架或库。

提前致谢。

4

1 回答 1

0

我相信这与您正在寻找的内容相对接近 - 参考 nettuts plus 上的 vanilla js ajax 教程:

load('test.txt', function(xhr) { 
    document.getElementById('container').innerHTML = xhr.responseText;  
    // you would obviously custom tailor this peice to utilize your specific data
});  

function load(url, callback) {  
    var xhr;  

    if(typeof XMLHttpRequest !== 'undefined') xhr = new XMLHttpRequest();  
    else {  
        var versions = ["MSXML2.XmlHttp.5.0",   
                        "MSXML2.XmlHttp.4.0",  
                        "MSXML2.XmlHttp.3.0",   
                        "MSXML2.XmlHttp.2.0",  
                        "Microsoft.XmlHttp"]  

         for(var i = 0, len = versions.length; i < len; i++) {  
            try {  
                xhr = new ActiveXObject(versions[i]);  
                break;  
            }  
            catch(e){}  
         } // end for  
    }  

    xhr.onreadystatechange = ensureReadiness;  

    function ensureReadiness() {  
        if(xhr.readyState < 4) {  
            return;  
        }  

        if(xhr.status !== 200) {  
            return;  
        }  

        // all is well    
        if(xhr.readyState === 4) {  
            callback(xhr);  
        }             
    }  

    xhr.open('GET', url, true);  
    xhr.send('');  
}

您可以根据返回值将“成功”处理程序构建到“确保准备就绪”中

这是 nettuts 教程的链接

另一个是 MDN ajax API 文档

于 2013-10-28T18:44:42.510 回答