【问题标题】:How to send ajax data to rails 3. jQuery is escaping the string如何将 ajax 数据发送到 rails 3. jQuery 正在转义字符串
【发布时间】:2013-12-06 23:36:05
【问题描述】:

我正在尝试这样做:

$.ajax({
   type: "PUT",
   url: /example,
   data: {_method: "put", "foo_model[bar_attribute]": value_var }
});

并且按预期工作,但我需要动态地构造部分foo_model[bar_attribute]

我正在尝试:

var model = "foo_model";
var attribute = "foo_attribute";
var param = model + "[" + attribute + "]";
var dataStr = '{_method: "put",' + param + ': ' + value + '}';

又一次:

$.ajax({
   type: "PUT",
   url: /example,
   data: dataStr
});

但它不起作用,jQuery 正在转义引号并在周围到处添加大括号......

有没有更好的方法来做到这一点?我还尝试了其他方法,例如制作 json 对象,将 processData 设置为 false,正如我在另一篇文章中看到的那样,但似乎没有任何效果......请求总是被转换和转义。也尝试过unescape,但它只有在我按字面书写时才有效:

data: {_method: "put", "foo_model[bar_attribute]": value_var }

谢谢。

【问题讨论】:

    标签: javascript jquery ruby-on-rails ajax json


    【解决方案1】:

    你可以使用这样的东西(测试和工作)

    var model = "foo_model";
    var attribute = "foo_attribute";
    var param = model + "[" + attribute + "]";
    var value = "test";
    
    $.ajax({
      url: "http://fiddle.jshell.net/pu6ME/show/",
      type: "GET",
      data: param + '=' + value
    }).done(function() {
       alert("Works!");
    });
    

    通过使用param + '=' + value 解决方法,您实际上可以使用动态名称! 我相信使用普通的 key : value 语法是不可能的,但在这个例子中并不重要。

    无需定义数据串。

    JSFiddle 示例(使用 Control/Cmd + I 查看网络活动,您会看到它有效)

    【讨论】:

    • 工作就像一个魅力。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 2011-06-21
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多