【问题标题】:Sinatra + Ajax to load dynamic contentSinatra + Ajax 加载动态内容
【发布时间】:2012-06-13 22:00:43
【问题描述】:
我想创建一个页面,其中将使用 Ajax (JQuery) 填充动态信息。该信息将来自我需要在其他 URL 中执行的各种 GET。
我将使用 Sinatra + JQuery 来实现这一点,但由于我的 WEB 经验几乎为零,并且不知道如何正确处理它。
这样做的必要条件是:
- 每次 GET 完成时,页面上都会出现一行新信息。
- 如果 GET 无法完成,页面上会显示默认信息。
到目前为止,我的想法是做这样的事情:
- 让我的控制器在线程内执行每个 GET。
- 每次线程结束时,无论成功与否,我都会通知视图结果并呈现部分
- 我将有尽可能多的部分(对于我必须执行的每个 GET)
- 第一次加载页面时,我填写了默认信息,我通过 AJAX 更新它们并使用成功的 GET 响应
这似乎不是正确的方法,所以我在问已经做过类似事情或在这方面有更多经验的人一些帮助。
【问题讨论】:
标签:
ajax
jquery
web
sinatra
【解决方案1】:
您从一个简单的 get('/'){} 路由开始,该路由包含默认消息(或任何其他 GET 路由)。然后你有你想要在默认路由上显示的其他 GET 路由。在 Sinatra 中,您可以使用 request.xhr? 检查请求是否为 xhr 请求。如果您有 xhr 请求,则将 json 值返回到视图,否则拒绝请求或使用正确的 html 呈现视图。这是在您的 sinatra 后端。在您的视图中,您可以使用 JQuery 或任何其他 JS 库或普通 JS 来处理异步数据请求。您可以使用 JQuery 中的 ajax 函数从您的路由请求数据,然后将它们添加到您的 DOM。就这么简单:)
现在您必须在 JQuery 站点上研究如何发出 ajax 请求以及如何将数据附加到现有 DOM。仅此而已。