【问题标题】:How to add data to a Rails ajax request如何向 Rails ajax 请求添加数据
【发布时间】:2018-11-07 07:05:13
【问题描述】:

在发出GET 请求时,是否可以在 Rails 5.1+(没有 jQuery)应用程序中使用 dataRails.ajax?或者data 只与POSTs 一起使用?

我有以下

Rails.ajax
      url: "/pages?title=lorem}"
      type: 'GET'

我宁愿拥有

Rails.ajax
      url: 'pages'
      type: 'GET'
      data: { title: 'lorem' }

但是当我尝试时,我的参数看起来像 { "object Object"=>nil, "controller"=>"pages", "action"=>"index"}

添加dataType: 'json'dataType: 'text' 似乎会更改传递给控制器​​的参数。

【问题讨论】:

  • 我经常使用 Rails.ajax,所以我很想知道它是如何处理这个问题的。在源代码中,它看起来只是将数据附加到 url 的末尾。可以看到实现here

标签: ruby-on-rails rails-ujs


【解决方案1】:

可以通过 GET 请求使用数据;但是,Rails.ajax simply appends the data 到 url。

if options.type is 'GET' and options.data
  if options.url.indexOf('?') < 0
    options.url += '?' + options.data
  else
    options.url += '&' + options.data

除了可读性之外,使用数据选项似乎没有任何优势。您自己将数据附加到 url 的第一种技术与 Rails.ajax 的底层实现相同。

Rails.ajax
  url: "/pages?title=lorem"
  type: 'GET'

不过,这也类似于how Rails.ajax handles data for POST requests。它不对数据执行任何转换。数据原封不动地传递给 XMLHttpRequest。数据是这样发送的,options.data 按原样传递。

xhr.send(options.data)

【讨论】:

  • 可读性对我来说很重要。
猜你喜欢
  • 1970-01-01
  • 2017-06-15
  • 2017-08-23
  • 2023-04-01
  • 2019-10-11
  • 1970-01-01
  • 2015-07-21
  • 1970-01-01
  • 2014-07-17
相关资源
最近更新 更多