Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Ajax和History动态加载页面?_Javascript_Php_Jquery_Html_Ajax - Fatal编程技术网

Javascript 如何使用Ajax和History动态加载页面?

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调用现在加倍。它以

在使用Ajax和历史记录时,我对以下问题感到困惑:

规格:

我有一个使用Ajax调用另一个页面的页面。 现在加载的页面中有datatables,inturn使用Ajax从现在的2个Ajax调用中获取数据 我使用history.js进行页面导航,它使用常见的ajax调用在page div中加载内容 现在,我面临以下问题:

对于第一个datatable页面调用,我得到一个ajaxcall。 令人惊讶的是,当我使用history导航到另一个页面并调用datatable页面时,ajax调用现在加倍。它以线性方式进行。 这是我在使用ajax加载页面时遇到的一个新问题,其中inturns包含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代码就会激发。现在,如何停止发生多次的事件附件?能否将该代码移出页面中只加载一次的部分?