AJAX加载内容的优缺点

时间:2010-08-27 07:25:02

标签: ajax jquery

通过多个过滤器对数据集进行排序并立即显示结果非常好,对吧? 我这样做的解决方案是将POST“过滤器”(读取表单)参数添加到名为dataset.php的页面,该页面返回编译HTML中的相应数据集,可以直接加载到我的页面中。

所以,除了这对于SEO以及已停用Javascript的人来说,这是一个完全禁忌,它似乎是一个很好的解决方案,可以在未来轻松构建。

但是,我还没有将其视为好的或坏的整体解决方案的经验。对于获取AJAX的数据集,我们应该关注什么?

3 个答案:

答案 0 :(得分:2)

  

所以,除了这对于SEO以及已经停用Javascript的人来说,这是一个完全禁忌之后,它似乎是一个很好的解决方案,可以在将来轻松构建。

不完全正确,有像jQuery Ajaxy这样的解决方案,它们使用历史记录跟踪启用AJAX内容,同时保持SEO和javascript禁用友好。你可以在我自己的网站Balupton.com上看到这一点,并证明它仍然是SEO友好的here

  

但是,我还没有将其视为好的或坏的整体解决方案的经验。对于获取AJAX的数据集,我们应该关注什么?

使用Ajax加载的内容非常适合用户体验,它快速而且很好看。如果您没有历史记录跟踪,那么它可能会非常混乱,特别是如果您使用ajax加载的内容来处理页面等内容,而不仅仅是侧边栏内容 - 那么您就会脱离用户所体验到的一致性。另一个警告是针对Ajax页面的Google Analytics跟踪。这些缺点,你已经提到的那些以及some others mentioned elsewhere都是非常困难的问题。

jQuery Ajaxy(如前所述)为几乎所有问题提供了一个很好的高级解决方案,但如果你还没有使用过Controller架构,那么这可能是一个很大的学习曲线,但大多数人都会很快得到它。

例如,要使用jQuery Ajaxy启用历史记录可跟踪的ajax内容以更改一组结果,您实际上不需要任何服务器端更改。您可以在页面底部执行以下操作:$('#results ul.pages li.page a').addClass('ajaxy ajaxy-resultset').ajaxify();

然后设置一个像这样的Ajaxy控制器来从响应中获取我们想要的内容:

        'resultset': {
            selector: '.ajaxy-resultset',
            request: function(){
                // Hide Content
                $result.stop(true,true).fadeOut(400);
                // Return true
                return true;
            },
            response: function(){
                // Prepare
                var Ajaxy = $.Ajaxy; var data = this.State.Response.data; var state = this.state;
                // Show Content
                var Action = this;
                var newResultContent = $(data.content).find('#result').html();
                $result.html(newResultContent).fadeIn(400,function(){
                    Action.documentReady($result);
                });
                // Return true
                return true;
            }
        }

这就是它的全部内容,上面的大部分内容只是来自演示页面的复制和粘贴代码。当然,这并不理想,因为我们在Ajax响应中返回整个页面,但无论如何这都必须发生。您可以随时升级脚本,并在服务器端进行检查以查找XHR标头,如果已设置(那么我们是ajax请求),所以只需渲染结果部分而不是一切。

答案 1 :(得分:1)

你已经命名了两个大的。现在您需要做的就是确保所有功能在没有javascript的情况下工作(使用请求的数据集重新加载页面),并使用AJAX来改进它(加载请求的数据集而不重新加载页面)。

答案 2 :(得分:1)

这在很大程度上取决于背景。在某些情况下,今天的人们可能希望在没有页面刷新的情况下立即交付结果。它还可以改善整体用户体验 - 同样,这在很大程度上取决于上下文。

然而,它也有其缺陷。在ajax内容发布后,用户是否需要返回上一页?因为这可能不像在浏览器中按“后退”按钮那么简单。