-3

我看到了一些聊天系统的代码,上面写着类似下面的内容来获取聊天消息。我已经看到 AJAX 是异步的。这里的 setTimeout 是定期刷新聊天记录。那么总的来说是异步通信吗?$.ajax 是同步的还是异步的?它在这里的意义是什么????

http://net.tutsplus.com/tutorials/javascript-ajax/how-to-create-a-simple-web-based-chat-application/

异步通信意味着如果有任何新数据,服务器必须将数据发送给客户端,而客户端不会窃听服务器。不是吗?请给我详细解释下面发生的事情............任何更好的解决方案如何使用 jquery-ajax 自动更新聊天日志

如果我们每隔 x 秒检查一次并重新加载整个窗口,那么这里需要使用 $.ajax 吗?只是使代码复杂.... 仅使用对数据库的 php-sql 请求和 setimeout 有什么区别 .... 第一种情况的成本:整个聊天被一遍又一遍地重新加载 + ajax 调用,第二种情况的成本案例:整个聊天被一遍又一遍地加载......所以我不明白根据性能使用ajax有什么好处......事实上我看到后者更好......不是吗???

function updateMsg()
{
$.ajax({
        url:"db.php",
        type:"POST",
        success:function(data){
        }
});
setTimeout("updateMsg()",7000);
}
4

2 回答 2

0

您可以使用async参数。async参数确定:请求是同步的还是异步的

$.ajax({
        url:"db.php",
        type:"POST",  
        async: true, // async: false
于 2013-04-27T08:15:31.107 回答
0

默认情况下是 async :

async (默认:true) 类型:Boolean 默认情况下,所有请求都是异步发送的(即默认设置为true)。如果您需要同步请求,请将此选项设置为 false。跨域请求和 dataType: "jsonp" 请求不支持同步操作。请注意,同步请求可能会暂时锁定浏览器,从而在请求处于活动状态时禁用任何操作。从 jQuery 1.8 开始,不推荐在 jqXHR ($.Deferred) 中使用 async: false ;您必须使用成功/错误/完成回调选项而不是 jqXHR 对象的相应方法,例如 jqXHR.done() 或已弃用的 jqXHR.success()。

 function updateMsg() {
        $.ajax({
            url: "db.php",
            type: "POST",
            async: true, //or false
            success: function (data) {}
        });

    }
于 2013-04-27T08:13:31.407 回答