【问题标题】:JQuery AJAX PUT, not workingJQuery AJAX PUT,不工作
【发布时间】:2013-02-08 00:08:15
【问题描述】:

我正在发送如下 JQuery AJAX 调用,以更新 ActiveRecord DB 中的记录:

var url_out = '/users/' + args.item.id;
$.ajax({
  url: url_out,
  type: 'POST',
  method: 'PUT',
  data: args.item,
  success: function(dat) {
    alert("did it");
  }

在用户控制器中,我有这个:

def update
  @user = User.find(params[:id])
  if @user.update_attributes(params[:user])

所以我需要将 args.item 中的数据作为 params[:user] 传递。可以使用 AJAX 调用传递命名参数吗?

【问题讨论】:

  • type (default: 'GET') Type: String 要发出的请求的类型(“POST”或“GET”),默认为“GET”。注意:这里也可以使用其他 HTTP 请求方法,例如 PUT 和 DELETE,但并非所有浏览器都支持。 api.jquery.com/jQuery.ajax
  • @Dom,非常感谢。是的,我已经看到了。事实证明这不是问题。 PUT 方法与使用方法 PUT 的 POST 相同,其他人也建议这样做。我正在编辑它以显示问题的新观点 - 如果你有机会,请看一下。

标签: javascript ruby ajax ruby-on-rails-3


【解决方案1】:

我可能错了,但我知道 Rails 实际上是通过添加一个值为“PUT”的隐藏参数 _method 来模拟 http 动词,而实际请求是一个 POST(由于某些浏览器不支持所有动词”)

SO,你可以尝试做个帖子,加个参数_method: "PUT"

【讨论】:

  • 非常感谢。事实证明这是一个不同的问题。我会更新帖子。
【解决方案2】:

感谢@Dom 和@Eduard 的帮助。事实证明我需要做这样的事情:

x_out = {};
x_out["first_name"] = args.item.first_name;
x_send = {};
x_send["user"] = x_out;

这让我可以将命名参数传递给控制器​​中的更新方法。

【讨论】:

    猜你喜欢
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 2010-12-23
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多