我是ajax的新手,我正在尝试使用PHP和jQuery构建一个实时(类似facebook)的消息系统。目前,当用户加载页面时,将从数据库加载消息。然后,脚本每2秒发送一次get请求,以从数据库中获取最新消息并将其显示在页面上。但是,过了一段时间,连接超时,如果我尝试重新加载网站,网站不会加载。它在我使用代理时加载。我觉得这与阻止我的ip的服务器有关。
这是我当前的代码(消息刷新)
$(function() {
var m = $('.messages');
m.scrollTop(d.prop("scrollHeight"));
setInterval(function() {
$.get("get_messages.php", function(result) {
$('.messages').html(result);
});
}, 2000);
});
如何让这更高效/更好?
答案 0 :(得分:1)
即使您对问题的评论很好,我宁愿以自己的方式回答这个问题。
首先,每隔2秒轮询一次服务器..一般应该工作,我只是猜测你被服务器阻止了..特别是如果它是公共/共享服务器 ..因为他们必须限制流量/高负荷,所以你不要为其他人减肥。
首先,我会检查您的浏览器检查器/ DOM ..您可能会看到网络请求返回错误代码而不是200状态..这应该会给您一些指示..取决于服务器及其响应方式。有些返回200状态/ ok但仍停止脚本。
要考虑的另一件事是缓存 ..使用你的GET请求,也发布一个时间戳。这将每次强制一个新的请求.. jQuery可以在后台处理这个但是肯定的浏览器仍然在该区域失败。所以发布将javascript时间戳附加到网址。
否则还要考虑添加记录到文本文件的下标,看看是否也停止记录,你可能会在这里找到一些有趣的结果。
如果所有其他方法都失败了,请安装/ 测试本地网络服务器到您的计算机并以这种方式进行测试..这也可以帮助您检查它是您的服务器还是您的脚本。
如果您尝试以上所有内容,您应该找到导致问题的原因的答案,或者至少得到一些关于它停止工作的地点或原因的指示..代理只是对我来说它是一个服务器块,但是还要记住一个代理可以改变它请求你的页面的方式....所以我首先从浏览器检查器开始..这是我的第一个参考点,当一些东西不能正常工作。
第一个/主要问题.. 这是公共/共享服务器还是您自己设置的服务器?如果您可以访问服务器上的各种日志,也请检查它们。