【问题标题】:rails ajax detect form parametersrails ajax检测表单参数
【发布时间】:2014-12-05 23:27:02
【问题描述】:

我正在使用 ajax 提交带有两个按钮的表单。然后我通过在控制器中使用 params[:commit] 检测按下了哪个按钮。我还在使用 jQuery 的 AjaxComplete 函数在前端进行一些操作。我的问题是如何在 jquery 的 Ajax Complete 函数中访问我的提交按钮的值,以便在不通过控制器的情况下判断按下了哪个按钮?

例如,我已经在做类似的事情,我检查 url 以查看发送了哪个 ajax 请求,然后执行一些操作,现在我想更深入地了解发送的参数ajax 请求(代码是coffeescript)

 $(document).ajaxComplete (event, xhr, settings) ->
    if settings.url.indexOf('mode=2') > 0
      $('#nav_tabs').show();

【问题讨论】:

  • 可以将你需要的任何数据附加到beforeSend中的xhr对象

标签: jquery ajax ruby-on-rails-4


【解决方案1】:

查看传递给ajaxComplete 处理程序的settings 参数的文档。 根据您的 jQuery 版本,您可能能够直接访问settings.data POJO。如果你做不到,你几乎可以通过settings.url 来获得你想要的。

例如,假设您使用data 对象{ herp: "derp", karp: "larp"}http://www.google.com 执行GET。此数据将作为查询参数附加到 URL。让我们搞砸吧!

// load the URL of the request
var u = new URL(settings.url);
var params = u.search.replace("?", "").split("&").map(
    function(currVal) {
        var parts = currVal.split("=");
        var resp = {};
        resp[parts[0]] = parts[1];
        return resp;
});
// params now contains an array of { key: value } mappings for the request params.
// now, lets merge them!
var merged_params = {};
for (var i : params) {
    merged_params[i] = params[i];
}
// now merged_params is a POJO with the original keys&values of the data sent to the server.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 2012-01-03
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多