如何将ajax数据发送到rails 3.jQuery正在转义字符串

How to send ajax data to rails 3. jQuery is escaping the string

本文关键字:jQuery 转义 字符串 转义字符 rails ajax 数据      更新时间:2024-05-07

我正在尝试这样做:

$.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 }

谢谢。

您可以使用类似的东西(经过测试和工作)

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查看网络活动,您会看到它是有效的)