ajax - 如何避免 Ajax 调用中的循环
问题描述
我有getData()
进行 ajax 调用和检索JSON
数据的功能。成功后,我调用另一个函数,即marquee()
. 在完成事件的选框内我getData()
再次调用,但是每次getData()
被调用时,它都会增加对提到文件的请求data.php
,例如第一次调用它调用一次,第二次调用它请求两次,然后两次变成 4 次、8 次和更多,如何避免这种情况?!
function getData()
{
$.get('data.php).done(function(response)
{
var data = JSON.parse(response);
if(data.Direction == "left")
{
$(".marquee").html("<span data-direction='"+data.Direction+"'>"+data.Message+"</span>");
}else if(data.Direction == "right"){
$(".marquee").html("<span data- direction='"+data.Direction+"'>"+data.Message+"</span>");
}
});
}
function marquee()
{
$(".marquee").marquee({duration : 10000}).bind("finished",function()
{
getData();
});
}
我希望我很清楚......感谢每个答案。
解决方案
每次调用 marquee 函数时,基本上都是在绑定一个完成的事件。在多个此类函数调用中,您将有重复的事件。在您的代码设置中,您需要在绑定之前取消绑定该函数。就像是
$(".marquee").marquee({duration : 10000}).unbind("finished",getData).bind("finished",getData)
理想情况下,您应该只绑定一次,这样您就不必一次又一次地解除绑定。
推荐阅读
- hibernate - oracle.jdbc.OracleDatabaseException: ORA-00972: 标识符太长
- python - Python Selenium - 获取href
- c -
在 Ubuntu 19.10 上 - windows - 了解 AD 域中的凭据过程
- amazon-web-services - 是否可以在创建图表时使用标签来排除 DataDog 中的实例?
- python - 如何将硒(jupyter笔记本)中的页面源保存到本地驱动器上的txt文件?
- typo3 - 缓存操作中控制器中的 PageTitleProviders 问题
- mysql - 使用 SQL Left Join 解决大量延迟问题
- java - java - 按长度拆分字符串,保持子字符串完整
- javascript - 当我尝试将自己的样式应用于 Tileserver PHP 提供的图块时,我收到此错误:“无法解析 URL 对象”