Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以Rails友好的方式使用jquery序列化数组_Javascript_Jquery_Ruby On Rails - Fatal编程技术网

Javascript 以Rails友好的方式使用jquery序列化数组

Javascript 以Rails友好的方式使用jquery序列化数组,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我想使用jquery向rails应用程序发送一个javascript数组 $.ajax url: 'some url' data: {list: [{id: 4, name: 'John'}, {id: 5, name: 'Locke'}]} method: 'post' dataType: 'json' 此方法的问题在于它序列化如下: 列表[0][id]=4&列表[0][name]=John&。。。诸如此类 引导,在轨道一侧到类似 {"list"=>

我想使用jquery向rails应用程序发送一个javascript数组

$.ajax
  url: 'some url'
  data: {list: [{id: 4, name: 'John'}, {id: 5, name: 'Locke'}]}
  method: 'post'
  dataType: 'json'
此方法的问题在于它序列化如下:

列表[0][id]=4&列表[0][name]=John&。。。诸如此类

引导,在轨道一侧到类似

    {"list"=>
      {
        "0"=>{"id"=>"4", "name"=>"John"},
        "1"=>{"id"=>"5", "name"=>"Locke"}
      }
     }
我想买点像这样的东西

      {"list"=>
        [
          {"id"=>"4", "name"=>"John"},
          {"id"=>"5", "name"=>"Locke"}
        ]
       }
(注意内部列表而不是内部哈希)

有没有一种干净、漂亮的方式来以rails能够识别的方式发送数据

(注:该视图不是由rails生成的,它是phonegap移动应用程序)

这个问题与我的问题无关


我的问题是以特定的方式序列化,而问题是如何序列化。

我为您提供了两种选择:

正如其他人所建议的,在AJAX调用中使用
JSON.stringify()
/
JSON.generate()
。是的,Rails将以单个字符串的形式获取数据,但这没关系。收到数据后,使用
JSON.parse()
将其转换回JSON

第二,不管怎样,只需迭代它:

h = {"list"=>
      {
        "0"=>{"id"=>"4", "name"=>"John"},
        "1"=>{"id"=>"5", "name"=>"Locke"}
      }
     }

h['list'].each do |elem|
  value = elem[1]
end

# => {"id"=>"4", "name"=>"John"}
# => {"id"=>"5", "name"=>"Locke"}

在每次迭代中,
value
将成为原始数组中的每个元素。

使用
json.stringify(obj)
将数据转换为json的可能重复项。所有现代客户端(和IE8)都在本地支持它。现在jQuery将“数据”解释为单个字符串,因为Rails服务器可能不支持它。JSON.stringify(obj)可能不是答案!是的,根据服务器和jQuery,数据都是单个字符串;确保rails服务器知道内容类型是json(使用内容类型头或format::json或将.json附加到链接)