如何在发送之前将数据附加到XHR请求?

时间:2011-10-24 18:39:04

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

我有一个使用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"}

为什么对象对象为nil?

由于

2 个答案:

答案 0 :(得分:1)

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

以下是针对同一问题的更多细节:

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

答案 1 :(得分:0)

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

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