我有一个通过 html 提交更新模型的管理表单。我希望能够通过管理表单中的链接或按钮将表单的内容发送到 Ajax 模式对话框以进行“预览”。
有没有办法通过 Ajax 将表单的内容发送到模态对话框而不破坏 html 提交?到目前为止,我所能做的就是将数据作为 html 放入模式中,这会破坏 js 渲染。我发现的所有 Ajax 提交示例都附在表单上,这将破坏 html 提交。
建议和/或指针表示赞赏。
我们使用 Rails 3.2.12 是为了它的价值。
我有一个通过 html 提交更新模型的管理表单。我希望能够通过管理表单中的链接或按钮将表单的内容发送到 Ajax 模式对话框以进行“预览”。
有没有办法通过 Ajax 将表单的内容发送到模态对话框而不破坏 html 提交?到目前为止,我所能做的就是将数据作为 html 放入模式中,这会破坏 js 渲染。我发现的所有 Ajax 提交示例都附在表单上,这将破坏 html 提交。
建议和/或指针表示赞赏。
我们使用 Rails 3.2.12 是为了它的价值。
我想这取决于你如何渲染你的模态。如果您在服务器端进行操作,并且只需要将表单值获取到您的 ajax 控制器操作,您可以使用 jquery 执行类似的操作“
$.post(ajaxUrl + "?" + $("#myform").serialize())
生成表单值的查询字符串,您可以将其发送给 ajax 模型。
或者,如果您正在构建模态客户端,请尝试
$("#myform").serializeArray()
得到一组name, value
对
这就是让它在 Rails 3.2.12 下工作所需要的
看法:
<%= link_to 'Preview Promotion UI', admin_preview_promotion_url, id: :promotion_preview %>
上面的链接在 do/end 表单中。
application.js 中的 Javascript
$("#promotion_preview").live('click', (function (event) {
event.preventDefault();
$.post("/store/admin/promotions/preview",
$(event.currentTarget.parentElement).serialize().replace('=put&', '=post&'),
{},
"script"
);
}));
Rails.js 在页面中注入了一些隐藏代码,这些代码设置了对 PUT 的响应类型,然后阻碍了路由。至少在这种情况下,只需将 PUT 替换为 POST 即可解决问题。
使用这段代码,我可以像往常一样发布我的表单更新,并使用表单数据激活模式对话框“预览”。