通过多个过滤器对数据集进行排序并立即显示结果非常好,对吧?
我这样做的解决方案是将POST
“过滤器”(读取表单)参数添加到名为dataset.php
的页面,该页面返回编译HTML中的相应数据集,可以直接加载到我的页面中。
所以,除了这对于SEO以及已停用Javascript的人来说,这是一个完全禁忌,它似乎是一个很好的解决方案,可以在未来轻松构建。
但是,我还没有将其视为好的或坏的整体解决方案的经验。对于获取AJAX的数据集,我们应该关注什么?
答案 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内容发布后,用户是否需要返回上一页?因为这可能不像在浏览器中按“后退”按钮那么简单。