【发布时间】:2012-01-08 21:24:31
【问题描述】:
我正在尝试实现简单的 Comet 聊天示例,为此我实现了长轮询,它每 30 秒递归调用一次。
按下按钮时,我希望另一个 ajax 请求使用 POST 在服务器上发送新数据。
现在我只是提醒这个函数来触发点击事件
<script src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
<script type="text/javascript">
var polling = function poll(){
$("#postMessage").click(function () {
alert("request");
});
$.ajax({ dataType: 'json',url: "CometServlet", success: function(data){
if (data !=null){
$('#message').append(data.sender+" : " + data.message+"<br />");
}
}, complete: poll, timeout: 30000 });
}
$(document).ready(polling)
</script>
而我的 HTML 是这样的:
<div>
<input type="button" id="postMessage" value="post Message">
</div>
<div id ="message" name="message"></div>
当我点击按钮时,我的警报会显示多次。为什么?我该如何解决?
【问题讨论】:
-
你在等 30 秒吗?这不是
timeout的用途,如果那是您的想法的话。您确定额外的alerts 不只是因为您在每个 ajax 请求完成后立即调用 poll 吗?
标签: javascript jquery comet