我在页面上用一个又大又丑的不可见表单来管理状态。我会在 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:
我可以看到要点只会做GET
s,因为它没有指定提供给调用type
的哈希中的键。$.ajax()
当我在那里对其进行硬编码时,它当然会执行POST
. 在进一步审查中,使用要点似乎不是我所需要的。
看起来我错了,我会以某种方式History.pushState()
为我做 Ajax 请求。它似乎只将条目推送到状态。这是完全合适的。我感到困惑的原因是这个应用程序之前使用了一个 pushState 包装器,它可以处理状态管理和随后的 Ajax 请求。因此,当我不使用要点时,我的 Ajax 帖子没有发生的原因是它一开始就不应该发生。