是否有任何方法可以快速轻松地将标准网站加载转换为整个网站上的AJAX

Is there any way to quickly and easily convert standard website loading to AJAX on entire website?

本文关键字:网站 转换 加载 标准 AJAX 方法 任何 是否      更新时间:2023-09-26

也许这不是一个好问题,但我想知道它是否会以某种方式容易和快速(只有一个功能也许?)可以改变网站上的所有链接从刷新网页到加载用户通过AJAX点击的URL ?

我的网站有标准链接无处不在,但如果你想有iPhone的移动应用程序出来,你需要使用AJAX无处不在(也许HTML5历史API),因为任何链接将打开Safari浏览器。

你认为有没有办法快速转换每一个链接,删除当前的源代码和加载全新的页面,而不刷新浏览器窗口?或者它是否需要手动编码并为每一组链接单独提供功能?

的例子:

jQuery(document).on('a', 'click', function(){
// STEP1: AJAX call that will make PHP download page from link
// STEP2: Delete current source code and load new one (in this case including deletion of this function itself)
});

你认为这有可能吗?还是会有陷阱?

我也做过类似的事情。这是可能的,但您可能需要在服务器端更改一些东西。在我的情况下,我与href = #有一些链接,其中一些有点击触发器,所以我想把它们排除在外。

在这个函数中,我检查没有href = #的每个链接,如果他们没有点击事件,我绑定ajax。

bindAjaxLinks: function() {
   $('a[href!="#"]').each(function() {
            var eventObj = $(this).data('events');
            if (!eventObj || !eventObj.click) {
                // not a javascript link, do your thing
                var link = $(this).attr('href');
                if (link) {
                    $(this).click(function(event) {
                        event.preventDefault();
                        // do your ajax calling here.
                    });
                }
            }
    });

一些注意事项:在我的情况下,我添加了一个额外的参数,像isAjax的每一个请求,我用这个函数,在后台我只发送整个页面的一部分(没有头部和一些其他标记)。后来,我用这个新的html替换了用户可见的内容。

这引起了一个问题:如果服务器响应了一个重定向,我得到了整个页面,这是我不想要的,所以我确保这个isAjax参数在重定向后保持,并且解决了这个问题。