如何发送远程表单参数

Posted

技术标签:

【中文标题】如何发送远程表单参数【英文标题】:how to send remote form params 【发布时间】:2014-05-27 22:45:20 【问题描述】:

我有一个表单,它使用了几个输入字段,这些字段被 remote: true 和自定义控制器操作 ajaxified。这样 UJS 驱动程序只发送给定的表单输入作为参数。我想要完成的是一个 ajaxified 输入字段,它将在它的“范围”之外发送一个字段的值作为params。你有什么建议?

【问题讨论】:

【参考方案1】:

让我解释一下 ajax-rails 和 remote=> true 的整个流程,您可以使用以下方式执行此操作,并且可以获取方法中的所有参数。

首先,当您使用 remote=> true 时,表单将提交或调用您在表单中定义的操作,例如:

<%= form_tag(:controller => 'my', :action => 'my_data',:id => 'filter_form', :remote => true) do %>
 #code here
<%= submit_tag 'save', :name => 'commit'%>
<%end%>

现在上面的代码将转到我的控制器中的 my_data 操作,

你可以在这里定义响应类型

def my_data
#actions on data here
respond_to do |format|
format.js
end

现在你必须创建一个 .js 文件,命名为动作名称....

my_data.js.erb

这里是表单的整体效果,您可以通过 jquery 和 javascript 编写和更新文档元素。

对于每个输入,您只需分配一个类并编写一个在输入框更改时调用的方法。另一件事是,当您想在单个方法中执行时,每个输入都有一个唯一的 ID,也可以在 params 中发送做任何你想做的事情。

【讨论】:

【参考方案2】:

Rails' JQuery UJS 只是 Rails 用来代表您调用 ajax 请求的依赖项。这意味着您的问题与 JQuery UJS 无关,而是与如何使用 ajax 整体处理有关

您通常会通过将任何额外数据附加到 Ajax 请求来处理它:

<%= link_to "Link", new_post_path(params: "here"), remote: true %>

如果您想创建一个“ajaxified”字段,您可能必须使用手动 ajax 调用来捕获 change 事件,以便将数据发送到您的事件:

#app/assets/javascripts/application.js
$('input[name="element"]').on("change", function()
    $.ajax(
        url: "url",
        data: $(this).serialize()
    );
);

然后,如@baharat Soni 所述,您将能够使用respond_to 处理服务器上的请求

【讨论】:

以上是关于如何发送远程表单参数的主要内容,如果未能解决你的问题,请参考以下文章

如何使用拦截器在 CORBA 中操作发送到远程对象的参数

从我的网站表单向远程 ssh 服务器发送命令

如何使用 Express 和 Node.js 从表单发送参数

如何在表单提交到下一个控制器时发送和访问参数/值

如何通过远程方法发送 json-rpc http post 请求并在 java 中传递加密参数

在 django 中更新表单数据