【问题标题】:Zend - how to stop layout from rerendering?Zend - 如何阻止布局重新渲染?
【发布时间】:2015-08-15 04:47:44
【问题描述】:

我制作了一个仅加载(这是计划)页面内容的 Ajax 脚本。问题是它仍然会重新加载整个布局以及视图。我怎样才能使它在它已经存在时不会重新渲染? 我的阿贾克斯:

$(document).ready(function() {
    $('.navigation li a').click(function() {
        var toLoad = $(this).attr('href');
        $('#content').hide('fast', loadContent);
        window.location = $(this).attr('href');
        function loadContent() {
            $('#content').load(toLoad, '', showNewContent())
        }

        function showNewContent() {
            $('#content').show('normal');
        }

        return false;
    });
});

【问题讨论】:

    标签: php jquery ajax zend-framework zend-framework2


    【解决方案1】:

    根据您的问题不确定,但您的 AJAX 代码是否位于视图中?

    这是一个棘手的问题,但我会尝试一下:在您给定的控制器中,您可能希望使用 Zend 特定的方法调用。在这里找到了这个,它可能适用。 Zend Framework - Set No Layout for Controller

    如果您已经尝试过与上述类似的方法,也许这个 Zend Framework2 链接会有所帮助:Zend Framework 2: Auto disable layout for ajax calls

    【讨论】:

    • 我在布局脚本中调用它。我知道它有效,因为它会隐藏动画。
    • 您是否可以在控制器中对此进行禁用?
    • 好的。我还注意到 jQuery document.ready - 里面有一个对 window.location 的调用,我不是 100% 确定 - 但它可能会导致你所说的重新加载。
    • 也许尝试注释掉 1 或 2 行 ajax 内容(window.location 调用可能导致无法访问其他函数?根据您最近的更改,还有其他事情发生吗?最后 -我可能会尝试在视图中而不是布局中执行 AJAX 内容 - 因为您正在调用禁用布局的方法
    • 我删除了所有的废话,只写了$('a').click(function() { var toLoad = $(this).attr('href'); $('#content').load(toLoad);,同时向我所有的控制器添加了setTerminal();,它成功了!现在唯一的问题是 URL 保持不变,无论内容如何,​​所以我必须以某种方式修复它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 2022-11-21
    相关资源
    最近更新 更多