2011-01-28 80 views
2

是否可以使用AJAX加载完整网页,我将如何处理它?使用AJAX加载网页

我在想,我可以像平常一样创建单独的页面,然后使用AJAX以某种方式获取该页面,并将其呈现在用户当前所在的位置。这是否是正确的假设?

基本上我打算做一个更加动态的网站,所以当用户点击一个选项时,它会向下滚动并显示请求的信息,没有明显的页面重定向。

任何建议将是伟大的。

谢谢。

+2

可能的,但inadvi黑貂 - 如果你重写整个页面,你并没有利用任何真正的好处。你的使用案例并没有让你听起来像你需要这样做,只是修改了AJAX页面的SOP部分。 – annakata 2011-01-28 11:50:37

回答

3

jQuery的.load(URL)方法加载HTML直接进入的元素。因此,如果您将每个<一个>标记更改为顶级元素上的.load(),则可以执行此操作。这有点像使用框架,但是定位DIV而不是框架。

当然它会破坏很多的东西,像后退按钮,表格,以便搬运等等等等,除非你把大量的工作英寸

,就像医生告诉时候谁“这伤害我这样做的时候“回答”那么不要那么做“,答案可能是”不这样做“。

+0

是的可用性问题是我试图牢记的事情之一。指出后退按钮很好。 – diggersworld 2011-01-28 12:27:22

1

一种可能的方式是获取HTML,然后将其写入到一个div

+0

这也是我可能会这样做的方式。 – Olical 2011-01-28 12:18:48

+0

请提供进一步的解释或可能为像我这样的n00bs的例子。 – chharvey 2012-02-03 03:44:56

0

是的,这是可能的。您可以从纯JavaScript中创建一个页面/网站,从Web服务或类似的处理程序中获取所有元素。尽管如此,这仍然是一场噩梦,并且根据您的需求遇到各种各样的问题。我将它作为学习jQuery,AJAX和其他一些事情的练习。我发现表单提交变得棘手。虽然数据通过AJAX发布到Web服务中,但管理页面状态变得非常复杂,并且随着网站需求的增长,它只会变得噩梦。

我还发现,为了实现这个目标,您必须选择在转换期间刷新整个界面,或者只是更改部分。刷新整个界面非常麻烦,对于“快速”用户来说,AJAX可能无法跟上。它也会导致Web服务请求发生冲突。如果您的页面有4个独立的部分正在更新,那么Web服务请求会在中间“丢失”并不常见,而不会更新。

所以你的问题的答案是“是”。仔细阅读你的问题,我会将你的请求范围保留在单独的显示页面上,而不需要太多的功能。保持它越简单,维护和使用就越容易。

0

我知道这是一个旧帖子,但这是一个很好的小脚本,可以完成这项工作。它可以将ajax内容加载到现有的非Ajax站点。需要jQuery。

脚本

<script type="text/javascript"> 
//Your navigation bar, can be "document" or body 
var $navigation = $(".side"); 

//Your main content that will be replaces 
var body = ".page"; 
var $body = $(body); 

$navigation.delegate("a", "click", function() { 
    window.location.hash = $(this).attr("href"); 
    return false; 
}); 

$(window).bind('hashchange', function() { 
    var newHash = window.location.hash.substring(1); 
    if(newHash) { 
     $body.fadeOut(200, function() { 
      $body.hide().load(newHash + " " + body, function() { 
       $body.fadeIn(200, function() { 
       }); 
      }); 
     }); 
    }; 
}); 

$(window).trigger('hashchange'); 
</script> 

详细

所有在$导航链接将有一个click事件添加到他们,将更新窗口的URL哈希值。该窗口正在监听散列更改,并将使用散列值发出AJAX请求来重新加载$ ​​body html。

优势

  • 历史(后退&前进)导航将工作:
  • 该站点将使用支持JavaScript和不浏览器的浏览器工作;
  • 如果你复制过去的URL,脚本将加载正确的页面;
  • 因为我们使用的是委托功能,它们通过了ajax负荷的结果添加的任何链接也将有click事件添加到他们

缺点

  • 您不能再使用锚在您的网站

欲了解更多信息和例子中看到:http://css-tricks.com/video-screencasts/85-best-practices-dynamic-content/