首页 > 解决方案 > Jquery ajax 发送带有 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 但如果有必要,原因是什么?

标签: jqueryruby-on-rails

解决方案


its just a wild guess but did you try to use jquery-Ajax´s 'dataType' option ?

data = [{a: 1, b: 2}, {c: 1, d: 2}]

$.ajax({
      url: url,
      dataType: 'json',
      type: 'post', 
      data: {events: data}
    })

on the ruby side you may have to decode the json-string properly


推荐阅读