0

我在页面上用一个又大又丑的不可见表单来管理状态。我会在 click 事件上序列化表单中的值并执行 ajax 提交,这将为页面上的 div 提供内容。我正在序列化和反序列化大表单中的值,并使用 jQuery BBQ 插件(我从未完全理解)来管理状态。

我正在尝试在我的应用程序中重做 jQuery BBQ 东西以使用 history.js。我将ajaxify-html5要点插入我的应用程序。

我的应用程序深入到一个数据库表中,将该表中的列作为页面上的链接列出。他们有分配给他们的类“.attrs”。

我看到正在调用的“点击”事件ajaxify。看起来它调用了 History.pushState,我想它就像 bbq.pushState,因为它会为我完成我的提交。

尽管我的 URL 保持不变,但我的请求似乎没有按我在 Rails 应用程序中的预期执行。我正在使用的示例 URL 是:

http://myapp/brands/get_attributes?brand_id=539page_attribute=attribute1&attribute1=Whirlpool

当我使用 BBQ 插件时,我指定了发送到 $.ajax() 调用的哈希值,如下所示:

hash = type: "POST", url: "brands/get_attributes", data: $("#buyersguideform").serialize()

由于它是在执行 Ajax 请求,Rails 会识别它并使用适当的 .js.erb 模板进行响应。

不幸的是,我的 URL 似乎没有包含足够的信息来告诉 History.js 提出什么样的请求。因此,代码正在执行常规的旧 GET 请求,甚至没有get_attributes在控制器中获得正确的操作。

我真的需要用这个 History.js 解决这些问题:

1)弄清楚如何摆脱我建立的疯狂的本土状态管理隐形形式。我已经开始使用我正在生成的参数化 URL 来做到这一点。我只是不确定如何从一个 Ajax 请求到下一个请求。换句话说,我不知道我应该何时/如何使用getState().

2) 了解如何让 History.js 执行 Ajax POST 而不是非 Ajax GET。

3)了解更多这个要点。说明说我所要做的就是插入脚本,但显然在声明部分提到了一些类,我应该以某种方式在我的应用程序中工作。

我是状态管理的新手,因此有点不知所措。我已经在这工作了 8 个小时,并且正在取得一些进展,但是速度非常慢。非常感谢任何帮助。

更新 1:

我可以看到要点只会做GETs,因为它没有指定提供给调用type的哈希中的键。$.ajax()当我在那里对其进行硬编码时,它当然会执行POST. 在进一步审查中,使用要点似乎不是我所需要的。

看起来我错了,我会以某种方式History.pushState()为我做 Ajax 请求。它似乎只将条目推送到状态。这是完全合适的。我感到困惑的原因是这个应用程序之前使用了一个 pushState 包装器,它可以处理状态管理和随后的 Ajax 请求。因此,当我不使用要点时,我的 Ajax 帖子没有发生的原因是它一开始就不应该发生。

4

1 回答 1

0

History.js 插件似乎只有付费支持。虽然看起来它可能做得很好,但我一直无法真正找到任何关于使用它的真正答案。如果您是 Javascript专家,正如作者对他自己所说的那样,那么您可能会做得很好。如果您对状态管理比较陌生并且正在寻找文档,那么您可能会遇到困难。

我已经回到 BBQ 插件来满足我的简单要求,并且它工作正常。它比 History.js 插件记录得更完整。我确信 History.js 的功能更胜一筹。当文档赶上来并且我能够得到我的问题的答案时,我会切换。

于 2012-11-15T14:25:22.950 回答