繁体   English   中英

如何动态地用ajax重新加载页面内容,而无需在Drupal上重新加载头?

[英]How to reload the page content with ajax dynamicly, without head reloading on Drupal?

嗨,Drupal Web开发人员! 我有一个必须解决的问题,但我从未尝试过使用Ajax页面重新加载。 无法重新加载页面头和某些div块(我给它们提供了iscritical="true"criticalid="someidword"标签)。 因此,我编写了以下JavaScript代码:

$(document).ready(function(){
$('a').click(function(){
    var href_ = ($.trim($(this).attr('href'))).toLowerCase();
    var href = $(this).attr('href');

    if((href.substr(0, 1) != '#') && (href.substr(0, 11) != 'javascript:')){
        IG_AJAX_PAGELOAD(href);
        return false;
    }
});
});

function IG_AJAX_PAGELOAD(href){
$.get(href, function(res){
    if((strpos(res.toLowerCase(), '<body>', 0) == false) || (strpos(res.toLowerCase(), '</body>', 0) == false))
        return false;
    var critical_block_html_array = new Array();
    $('div[iscritical="true"]').each(function(){
        critical_block_html_array[$(this).attr('criticalid')] = $(this).html();
    });

    console.log(document.ready);

    document.body.innerHTML = res.substr(strpos(res.toLowerCase(), '<body>', 0) + 7, (strpos(res.toLowerCase(), '</body>', 0) - 1 - (strpos(res.toLowerCase(), '<body>', 0) + 7)));
    for(var cur in critical_block_html_array){
        if($('div[criticalid="'+cur+'"]').length < 1) continue;
        $('div[criticalid="'+cur+'"]').html(critical_block_html_array[cur]);
    }

    $(document).ready();
    $(window).load();

    console.log('page loaded successfully');
});
return false;
}

而且有效。 但是,当重新加载页面内容时, <head>标记内的JavaScript代码不起作用,如果仅加载页面,它们必须如何工作。 我尝试运行假的“页面加载和窗口加载”事件,但没有任何工作希望。 我应该怎么做才能使代码完美地工作? 可能是,您知道一些模块吗?

也许return false; 是你的问题。 您想在页面上的每个链接上触发事件!?

告诉我们您为什么需要这样的代码,我们会尽力提供帮助。

并且不要忘记为您的代码创建一个jsfiddle

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM