Jquery ajax send JSON 对象,其值为 JSON 对象数组



注意:我在后端使用Ruby on Rails。

我想使用 JQuery AJAX 发送以下数据:

data = [{a: 1, b: 2}, {c: 1, d: 2}]
$.ajax({
url: url,
type: 'post', 
data: {'events': data}
})

但是当我使用 JQuery 发送这样的数据时,我会在我的 Rails 后端获得以下数据

{"events"=><ActionController::Parameters {"0"=>{"a"=>"1", "b"=>"2"}, "1"=>{"c"=>"1", "d"=>"2"}} permitted: false>

为什么我没有在后端获得类似关注的数据

{"events"=>[{"a"=>"1", "b"=>"2"}, {"c"=>"1", "d"=>"2"}]

此外,我看到一些答案,人们说使用JSON.stringify进行序列化 喜欢

data = [{a: 1, b: 2}, {c: 1, d: 2}]
$.ajax({
url: url,
type: 'post', 
data: {'events': JSON.stringify(data)}
})

但这events值作为字符串发送,需要在后端反序列化。我认为没有必要使用 JSON.stringify,但如果有必要,原因是什么?

这只是一个疯狂的猜测,但您是否尝试使用jquery-Ajax的"数据类型"选项?

data = [{a: 1, b: 2}, {c: 1, d: 2}]
$.ajax({
url: url,
dataType: 'json',
type: 'post', 
data: {events: data}
})

在Ruby方面,您可能需要正确解码json字符串

最新更新