Javascript 如何使用Ajax和History动态加载页面?
在使用Ajax和历史记录时,我对以下问题感到困惑: 规格: 我有一个使用Ajax调用另一个页面的页面。 现在加载的页面中有datatables,inturn使用Ajax从现在的2个Ajax调用中获取数据 我使用history.js进行页面导航,它使用常见的ajax调用在page div中加载内容 现在,我面临以下问题: 对于第一个datatable页面调用,我得到一个ajaxcall。 令人惊讶的是,当我使用history导航到另一个页面并调用datatable页面时,ajax调用现在加倍。它以线性方式进行。 这是我在使用ajax加载页面时遇到的一个新问题,其中inturns包含ajax调用。这个问题的主要原因是什么?还有,这个问题的解决方案是什么 我的通用代码如下所示:Javascript 如何使用Ajax和History动态加载页面?,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,在使用Ajax和历史记录时,我对以下问题感到困惑: 规格: 我有一个使用Ajax调用另一个页面的页面。 现在加载的页面中有datatables,inturn使用Ajax从现在的2个Ajax调用中获取数据 我使用history.js进行页面导航,它使用常见的ajax调用在page div中加载内容 现在,我面临以下问题: 对于第一个datatable页面调用,我得到一个ajaxcall。 令人惊讶的是,当我使用history导航到另一个页面并调用datatable页面时,ajax调用现在加倍。它以
<script>
var index=function(url,update_id,state){
$.ajax({
url: url,
}).done(function(data) {
$("#"+update_id).html('');
$("#"+update_id).html(data);
if(state == 1){
history.pushState({url: url,id:update_id},"name",url);
}
});
}
jQuery(document).ready(function($) {
$(document.body).on('click','.link_click',function(){
var url = $(this).attr('href');
var update_id = $(this).attr('update_id');
index(url,update_id,1);
})
});
window.addEventListener('popstate', function(event) {
if(event.state.url != null){
index(event.state.url,event.state.id);
}
});
</script>
<a href="/page1/index" onclick = "return false;" update_id="new" class="link_click">My Contact</a>
我的链接如下所示:
<script>
var index=function(url,update_id,state){
$.ajax({
url: url,
}).done(function(data) {
$("#"+update_id).html('');
$("#"+update_id).html(data);
if(state == 1){
history.pushState({url: url,id:update_id},"name",url);
}
});
}
jQuery(document).ready(function($) {
$(document.body).on('click','.link_click',function(){
var url = $(this).attr('href');
var update_id = $(this).attr('update_id');
index(url,update_id,1);
})
});
window.addEventListener('popstate', function(event) {
if(event.state.url != null){
index(event.state.url,event.state.id);
}
});
</script>
<a href="/page1/index" onclick = "return false;" update_id="new" class="link_click">My Contact</a>
我使用这个通用代码使用Ajax和历史链接每个页面您的项目是否使用框架?在使用Yii框架之前,我注意到类似的行为。我注意到,如果使用静态Id创建对象,将导致ajax调用的数量成倍增加
尝试为对象提供唯一的ID,这样事件就不会被阻塞。这只是一个想法:加载了Ajax的页面是否有可能再次将click事件附加到链接上?我正在为我的项目使用Cake PHP框架。由于datatable ajax调用,我仍然会遇到这个错误扫描您是否显示了一些代码,说明这个ajax调用是如何添加到您的对象中的?这种情况多久发生一次。启动代码?如果运行多次,您将多次附加事件谢谢您的提示。只要单击站点上的链接,on代码就会激发。现在,如何停止发生多次的事件附件?能否将该代码移出页面中只加载一次的部分?