【问题标题】:How do you append data to an XHR request beforeSend?如何在发送前将数据附加到 XHR 请求?
【发布时间】:2011-10-24 18:39:03
【问题描述】:

我有一个使用 Rails UJS 提交 remote=true 的表单。

在 beforeSend 事件中,我想附加数据。我正在尝试以下方法:

onNewListItemFormBeforeSend : function(event, xhr, settings) {

  settings.data += { 'list_item[title]' : input_val,
    'list_item[position]' : 0,
    'list_items[open_positions]' : 'stuff',
   'list_items[done_positions]' : 'stuff' )
  };

}

但这是在我注销 settings.data 时添加一个对象...将这些项目附加到 settings.data 的正确方法是什么?

谢谢

更新

我也尝试过:

settings.data = { 'number' : 'XXXXXX' }

但这没有用。在我看到的日志中:

 Started POST "/lists/9/list_items" for 127.0.0.1 at 2011-10-24 11:55:39 -0700
     Processing by ListItemsController#create as JSON
     Parameters: {"object Object"=>nil, "list_id"=>"9"}

为什么 object 对象为 nil?

谢谢

【问题讨论】:

    标签: javascript jquery ruby-on-rails ruby-on-rails-3 ujs


    【解决方案1】:

    如果您使用的是较新版本的jquery_ujs,您应该可以使用data-params(如果您现在可以这样做的话)。否则,您可以绑定到ajax:before 并在此时修改数据。我会自己学习data-params

    这里有更多关于同一问题的详细信息:

    https://github.com/rails/jquery-ujs/issues/168

    【讨论】:

      【解决方案2】:
      settings.data["list_item"] = { 'title' : input_val,
          'position' : 0,
          'open_positions' : 'stuff',
          'done_positions' : 'stuff'
      };
      

      试试这样的。您可以创建“list_item”属性并在js中像这样动态设置它。

      【讨论】:

      • 谢谢,但这不起作用......当我记录 settings.data 时,这些项目没有被附加
      猜你喜欢
      • 2020-06-27
      • 2021-06-04
      • 1970-01-01
      • 2015-01-05
      • 1970-01-01
      • 1970-01-01
      • 2020-07-08
      • 1970-01-01
      • 2019-05-23
      相关资源
      最近更新 更多