【发布时间】:2013-05-28 12:45:42
【问题描述】:
我正在尝试更新位于 div (div1) 中的聊天内容,但仅当 div1 的内容发生更改时(一条消息已提交到 db 并在 div1 中提取)。
我尝试了 here 的解决方案,但我的 get 无法比较数据。
此解决方案完美运行,但没有内容比较:
window.onload = startInterval;
function startInterval()
{
setInterval("startTime();",2000);
}
function startTime()
{
jQuery('#div1').load('index.php #div1 > *');
}
这是基于this的修改,失败:
window.onload = startInterval;
function startInterval()
{
setInterval("startTime();",2000);
}
function startTime()
{
var $main = $('#div1');
$.get('chat.php #div1', function (data)
{
if ($main.html() !== data) $main.html(data);
});
}
我尝试了对这段代码的各种修改,但无济于事...... 我无法重新加载整个页面,如果没有必要,我也不想这样做,因为如果您必须滚动浏览消息,这会使聊天更难阅读。 如何解决这个问题?
更新
根据@T.J 的建议,我修改了现在完美运行的代码:
window.onload = startInterval;
function startInterval()
{
setInterval(startTime,3000);
scrolDown();
}
function startTime()
{
var $main = $('#div1');
$.get('#div1', function (data)
{
elements = $(data);
thisHTML = elements.find("#div1").html();
if ($main.html() !== thisHTML) {
$main.html(thisHTML);
scrolDown();
}
});
}
另一个问题是获取所需的库:
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>
这显然不是我之前使用的负载所需要的。
【问题讨论】:
-
旁注:不要将字符串传递给
setTimeout或setInterval。使用setInterval(startTime,2000);(传递函数引用),而不是setInterval("startTime();",2000);(传递字符串)。 -
您的第一次(成功)尝试从 index.php 中提取,第二次不成功从 chat.php 中提取,这些页面是否正确?
-
那些页面应该是一样的,只是我在简化代码时犯了一个错误。
标签: javascript jquery html get load