通过 JSON/AJAX 更新 HTML

2024-01-02

自从我听说 JSON 以来,我一直在我的 Rails 应用程序中使用 JSON 来处理 AJAX 功能,因为使用 RJS/渲染 HTML“感觉”错误,因为它违反了 MVC。我从事的第一个 AJAX 密集型项目最终有 20-30 个控制器操作直接与特定的 UI 行为相关,并且我的视图代码分布在控制器操作、部分和 rjs 文件中。使用 JSON 允许您在视图中保留视图特定代码,并且仅通过 AJAX 与视图不可知/RESTful 控制器操作进行交互以获取所需的数据。

我发现使用纯 JSON 的一个令人头疼的问题是,您必须通过 JS“渲染”HTML,对于必须更新 DOM 重元素的 AJAX 来说,这可能是一种真正的痛苦。我最终得到了长字符串构建代码,例如

// ...ajax 
success: function(records){
  $(records).each(function(record){
    var html = ('<div id="blah">' + record.attr +
      etc +
    ')
  })
}

其中etc是10-15行基于记录数据动态构建的HTML。除了烦人之外,这种方法的一个更严重的缺点是 HTML 结构的重复(在模板和 JS 中)。* 这种方法有更好的实践吗?

(我最终伸出援手的动机是我现在的任务是更新 HTML,如此复杂,以至于首先需要两个嵌套的 Ruby 代码循环才能渲染。在 Javascript 中复制它似乎很疯狂。)

  • 我考虑过的一件事是直接从文件系统加载静态部分文件,但这似乎有点多。

我喜欢模板的想法。根据我的经验,它确实可以清理混乱的字符串操作!

有很多解决方案,例如,查看 John Resig(jQuery 的创建者)的:

http://ejohn.org/blog/javascript-micro-template/ http://ejohn.org/blog/javascript-micro-templating/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 JSON/AJAX 更新 HTML 的相关文章

随机推荐

  • 如何查找存储过程中使用的表列表,而无需“With(nolock)”字样[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有很大的表数据 每个表都需要以语句 nolock 结尾 请帮我在所有存储过程中查找 Example 如果存储过程使用两个表 a 和 b 并
  • MySQL Linq 使用 .Contains(变量)

    设置信息 VS2013 C EF6 MySQL数据库 Net 连接器 6 9 5 我正在尝试创建一种方法 该方法使用部分名称作为搜索条件返回帐户记录的集合 如果我使用 IQueryable Contains 扩展方法对字符串值进行硬编码 它
  • 是否可以在 React Native 中使用 React hooks?

    在 React 文档中 它说变量和监听器钩子必须在组件内声明 但当我尝试这样做时 React Native 会抱怨 有没有办法在React Native中使用Hooks 或者有谁知道它们将来是否会实施 不过有点像useEffect不管用 当
  • 使用.NET检查AWS中是否存在SQS

    我能够使用 AWSSDK SQS 包中的 AmazonSQSClient 客户端成功将消息发送到 NET 中的队列 如何检查特定队列是否存在以及是否未创建 您需要使用以下命令运行检查AmazonSQSClient GetQueueUrl s
  • bash 脚本中的 if 条件取反

    我一直试图否定以下命令 wget q tries 10 timeout 20 spider http google com if eq 0 then echo Sorry you are Offline exit 1 如果我连接到互联网 则
  • 如何使用 Spring Boot 和 Spring Security 保护 REST API 的安全?

    我知道保护 REST API 是一个被广泛评论的话题 但我无法创建一个满足我的标准的小型原型 并且我需要确认这些标准是现实的 如何保护资源以及如何使用 Spring 安全性有很多选择 我需要澄清我的需求是否现实 我的要求 基于令牌的身份验证
  • 如何获取写入的记录数(使用DataFrameWriter的保存操作)?

    使用spark保存记录时有没有办法获取写入的记录数 虽然我知道它目前不在规范中 但我希望能够执行以下操作 val count df write csv path 或者 能够对步骤的结果进行内联计数 最好不使用标准累加器 将 几乎 同样有效
  • iOS 10 中 UICollectionView 预取数据源?

    目的是什么prefetchDataSourcesiOS 10 中引入 我刚刚在 XCode 8 GM Seed 中运行一个项目并开始出现错误 MessagesExtension 17902 1238603 Assertion failure
  • 在Python中打印字符串会在字符串之前打印“u”吗?

    打印列表中元素之前的 u 我没有在代码中输入 u hobbies prompt user three times for hobbies for i in range 3 hobby raw input Enter a hobby hobb
  • 使用 IDE 运行 Spring-boot 的 main

    我有一个 spring boot 应用程序需要 可作为 Servlet 容器中的战争进行部署 可通过 mvn spring boot run 运行 我还希望能够通过右键单击 IDE Eclipse 或 IntelliJ IDEA Commu
  • NSFilePresenter 方法永远不会被调用

    我正在尝试编写一个简单的 玩具 程序 它使用 NSFilePresenter 和 NSFileCoordinator 方法来监视文件的更改 该程序由一个加载 硬编码 文本文件的文本视图和一个用于保存文件更改的按钮组成 我的想法是 我有两个实
  • 在 Windows Mobile 应用程序中播放 YouTube 视频

    我正在开发一个用于 Windows Mobile 6 或可能 5 的应用程序 用于播放 YouTube 视频 嗯 它should播放 YouTube 视频 并控制 查询播放器的状态变化 当前帧 时间等 在网上搜索了相当长一段时间 以及一些尝
  • Hibernate 验证器中的自定义消息密钥不适用于 message.property

    我正在研究 Spring Boot 我使用 Hibernate Validator 来验证我的 bean 我添加了一个自定义键 NotEmpty注释 并在 message properties 中添加键 值对 但它没有从 message p
  • Laravel 4:如何向 DB::table 添加范围?

    使用 Eloquent 模型添加范围很容易 public function scopeMyScope query Do stuff to that query 但如何添加范围DB table 我使用此查询来获取页面浏览量 views DB
  • 如何在 Dart 中只替换字符串中的一个字符?

    我试图仅替换字符串 dart 中的一个字符 但找不到任何有效的方法 由于字符串不是 Dart 中的数组 我无法通过索引直接访问字符 并且没有内置函数可以做到这一点 这样做的有效方法是什么 目前我正在这样做 如下所示 List
  • 对话框过渡效果

    I am currently working on the transition effects for my dialog Please refer to the image below 我的对话框的入口动画应该是从上到中 而退出动画应该
  • 重写 LINQ 扩展方法

    有没有一种方法可以覆盖扩展方法 提供更好的实现 而无需显式转换为它们 我正在实现一种数据类型 它能够比默认扩展方法更有效地处理某些操作 但我想保留 IEnumerable 的通用性 这样任何 IEnumerable 都可以传递 但是当我的类
  • 如何将脚本添加到 jqgrid 行上的自定义按钮?

    我正在尝试处理 jqgrid 中自定义按钮的点击 我显示了按钮 但是当单击它们时 我的函数不会运行 如果我单击 jqgrid 外部的按钮 脚本就会运行 jqgrid会消耗按钮点击吗 不确定我缺少什么或不理解什么 这是网格 我没有重新加载整个
  • 更改 NSTableView 的边框颜色

    我可以改变颜色吗NSTableView s border 指针处的灰线 谢谢 你需要子类化你的NSScrollView NSScrollView通常不进行任何绘图 并且可能以这种方式与其子视图进行奇怪的交互 我建议放一些类似的东西 void
  • 通过 JSON/AJAX 更新 HTML

    自从我听说 JSON 以来 我一直在我的 Rails 应用程序中使用 JSON 来处理 AJAX 功能 因为使用 RJS 渲染 HTML 感觉 错误 因为它违反了 MVC 我从事的第一个 AJAX 密集型项目最终有 20 30 个控制器操作