首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Rails UJS,如何从函数提交远程表单

使用Rails UJS,如何从函数提交远程表单
EN

Stack Overflow用户
提问于 2012-10-02 09:51:45
回答 3查看 9.5K关注 0票数 19

我使用的是Rails UJS。我有一个表单设置来执行远程提交,如下所示:

代码语言:javascript
运行
复制
<form accept-charset="UTF-8" action="/subscriptions" class="new_subscription form-horizontal" id="new_subscription" data-remote="true" data-type="json" method="POST">

我正在尝试通过JavaScript函数提交此表单的方法。我试过了:

代码语言:javascript
运行
复制
var form$ = $("#new_subscription");
form$.get(0).submit();

但这样做的问题是,它提交表单没有远程,它发布到服务器,并刷新页面。你知道这是为什么吗?是否有不同的方式提交远程表单?

谢谢

EN

回答 3

Stack Overflow用户

发布于 2017-07-10 09:36:32

也许对于那些使用jquery-ujs (Rails5.0默认版本及更低版本)的人来说,正如米哈伊尔已经回答的那样,触发自定义jquery事件将会起作用,即:

代码语言:javascript
运行
复制
$("#new_subscription").trigger("submit.rails");

对于那些在2017年偶然发现这个问题并正在使用Rails 5.1的人来说,答案将是不同的。Rails5.1已经将jquery作为依赖项删除,因此用完全重写的rails-ujs替换了jquery-ujs。请参阅:http://weblog.rubyonrails.org/2017/4/27/Rails-5-1-final/

因此,您必须在rails-ujs中触发适当的CustomEvent object

到目前为止,在文档中还没有发布/推荐的方法(也就是RailsGuides),但这里有许多选项,您可以通过查看Rails的源代码来使用它们:

  1. 使用Rails.fire函数:

'submit')

  • You = $("#new_subscription") //您需要原生DOM元素Rails.fire( nativeFormEl,XHR还可以通过编程方式调用Rails.handleRemote处理程序(通过XHR实际使用data-remote=true提交表单的处理程序:

nativeFormEl = $("#new_subscription") //您需要原生DOM元素Rails.handleRemote.call(nativeFormEl,CustomEvent );//不幸的是,您不能通过rails-ujs.js //引用之前创建的提交事件对象...或者..。XHR提交成功,但在Rails.stopPropagation成功回调后抛出错误( Rails.handleRemote.call(nativeFormEl) //

我更喜欢选项1,因为它只是一个包装器,它使用了更新的Web API方法,例如创建一个CustomEvent并通过dispatchEvent将其分派到EventTarget

票数 42
EN

Stack Overflow用户

发布于 2012-10-02 14:11:06

尝试触发submit.rails事件:

代码语言:javascript
运行
复制
$("#new_subscription").trigger("submit.rails");
票数 15
EN

Stack Overflow用户

发布于 2012-10-15 07:43:52

尝试自己执行Ajax请求:

代码语言:javascript
运行
复制
$('#new_suscription').submit(function(){
  /*do whatever you want here*/
  $.post('/subscriptions',$(this).serialize(),function(){},'script');
}

这样,您就可以对表单数据执行POST请求,并将响应作为脚本执行。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12683524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档