jquery load 方法是不是提供与 Rails replace_html 方法等效的 ajax 功能?

Posted

技术标签:

【中文标题】jquery load 方法是不是提供与 Rails replace_html 方法等效的 ajax 功能?【英文标题】:Does the jquery load method provide ajax functionality equivalent to the Rails replace_html method?jquery load 方法是否提供与 Rails replace_html 方法等效的 ajax 功能? 【发布时间】:2010-10-26 13:06:34 【问题描述】:

jquery load method 从远程文件加载 html 并将其注入 DOM。例如,要将 feeds.html 文件加载到带有提要 ID 的 div 中,您可以这样做:

$("#feeds").load("feeds.html");

这是使用 Rails replace_html 方法调用部分的替代方法,还是功能略有不同?

page.replace_html 'feeds', :partial => 'main/feeds',
    :locals => :feed =>  @feed_data 

[编辑]:正如 Craig Stuntz 所指出的,replace_html 返回 javascript 而不是 HTML - 这有什么优点/缺点?这是否只是意味着您返回的片段具有更多功能,就像使用 Javascript 的网页比常规 HTML 页面更强大一样?还是有其他原因返回 Javascript 而不是 HTML?

【问题讨论】:

【参考方案1】:

最终结果大致相同,但它们的工作方式截然不同。 load 方法意味着你的服务器返回一个 HTML 片段,然后 jQuery 将它插入到页面中。 replace_html 方法意味着您的服务器正在返回 JavaScript 而不是 HTML,并且执行此 JavaScript 以将 HTML 片段插入页面。所以最终生成的 HTML 是一样的,但是客户端和服务端的流量差别很大。

【讨论】:

返回 Javascript 而不是 HTML 的优点/缺点是什么?这是否只是意味着您返回的片段具有更多功能,就像使用 Javascript 的网页比常规 HTML 页面更强大一样?还是有其他原因返回 Javascript 而不是 HTML? 我认为这真的取决于您是否关心通过网络发送的内容。如果获取您的 URI 的唯一客户端是您自己的 Rails 应用程序,那么它可能根本不重要。另一方面,如果其他客户端可能会获取您的 URI,可能是使用不是浏览器的客户端,那么这可能很重要。这真的取决于你在做什么。 您的意思是因为某些客户端无法处理 Javascript,但很可能能够处理 HTML?我认为 HTML 和 JS 或多或少是技术上的兄弟姐妹,因此任何可以处理其中一个的客户端都更有可能处理另一个? 一些客户端选择不处理 JavaScript,因为它可能是一个安全漏洞。例如,Adobe Reader 和 Apple QuickTime 都因 JavaScript 处理而存在严重的安全问题。

以上是关于jquery load 方法是不是提供与 Rails replace_html 方法等效的 ajax 功能?的主要内容,如果未能解决你的问题,请参考以下文章

可以使用 jQuery.load() 函数加载 ASCX 吗?

前端性能优化 - 用RAIL模型分析性能

jquery如何判断一个文件是不是存在,求关键代码。

jquery中ajax方法load get post与脚本文件如php脚本连接时,脚本怎样接受数据?

JQuery等待加载与库冲突

jQuery – AJAX load() 方法