Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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
Jquery 存储使用json输入的动态表单和数据_Jquery_Json_Forms_Dynamic - Fatal编程技术网

Jquery 存储使用json输入的动态表单和数据

Jquery 存储使用json输入的动态表单和数据,jquery,json,forms,dynamic,Jquery,Json,Forms,Dynamic,我不熟悉使用JSON。。我知道这里可能已经有人问过了,不过,我只是想咨询一下我是否做了正确的事情 我需要为不同的页面创建一个动态表单。我需要能够为每个页面添加一个动态表单。从管理面板,我可以在页面模板中添加/编辑/删除字段——更改字段的顺序、名称、类型、值等 因此,我将动态表单字段存储在json中,对于每个页面中输入的数据,我也将其存储在json中。下面是存储在我的数据库中的JSON数据示例: 具有两个字段的动态表单的JSON结构: { "0":{ "id":"511ddf15cb8ae_1

我不熟悉使用JSON。。我知道这里可能已经有人问过了,不过,我只是想咨询一下我是否做了正确的事情

我需要为不同的页面创建一个动态表单。我需要能够为每个页面添加一个动态表单。从管理面板,我可以在页面模板中添加/编辑/删除字段——更改字段的顺序、名称、类型、值等

因此,我将动态表单字段存储在json中,对于每个页面中输入的数据,我也将其存储在json中。下面是存储在我的数据库中的JSON数据示例:

具有两个字段的动态表单的JSON结构:

{
"0":{
  "id":"511ddf15cb8ae_1", // generated using uniqid() and counter, to generate a unique id for each field
  "name":"Page Name #1",
  "type":"textfield",
  "validation":"email", 
  "require":"on",
  "value":""  //default value
},
"1":{
  "id":"511ddf15cb8ae_2",
  "name":"Field Name #2",
  "type":"checkbox",
  "validation":"none",
  "require":"on",
  "value":["item 1","item 2","item 3"]  //selection
}
}
{
"511ddf15cb8ae_1":   //the field id, used as key to be able to directly access the data
  "test new data",
"511ddf15cb8ae_2":
  ["item 1","item 2"]
}
存储输入值的JSON:

{
"0":{
  "id":"511ddf15cb8ae_1", // generated using uniqid() and counter, to generate a unique id for each field
  "name":"Page Name #1",
  "type":"textfield",
  "validation":"email", 
  "require":"on",
  "value":""  //default value
},
"1":{
  "id":"511ddf15cb8ae_2",
  "name":"Field Name #2",
  "type":"checkbox",
  "validation":"none",
  "require":"on",
  "value":["item 1","item 2","item 3"]  //selection
}
}
{
"511ddf15cb8ae_1":   //the field id, used as key to be able to directly access the data
  "test new data",
"511ddf15cb8ae_2":
  ["item 1","item 2"]
}
我的主要问题是,如果我在数据库中使用json存储输入的值,或者应该单独存储输入的值——db table row,这样可以吗

有没有更好的办法,或者已经可以了?谢谢


干杯取决于你下一步的计划:)

如果您只打算稍后重建表单并使用输入的值进行填充(我相信您也在存储动态表单),那么您所采取的方法非常好,因为您不需要使用复杂的查询从输入的值重新构造json


但是,如果您以后对在各个字段中输入的值进行一些复杂的查找/查询,例如“特定用户在特定字段中输入特定值的次数”之类的,则会很乏味。如果您打算这样做,那么我建议使用关系方法并将它们存储在表中;动态表单和输入的值。

将其作为字符串存储在SQL数据库中是可以的,因为您总是可以
字符串化
解析
,但我发现这非常繁琐,尤其是当我想执行联接操作或持久地表示复杂结构时。既然已经在JSON中有了它,为什么不使用NoSQL持久存储机制,比如存储JSON本身呢

,然后对它们进行查询,这是当前实现所缺少的

事实上,您可以在他们的网站上打开交互式MongoDB shell,并从那里使用以下内容对数据库进行原型化:

> var page = {"name":"Page Name #1",   "type":"textfield",   "validation":"email",    "require":"on",   "value":"aValue"};
{
 "name" : "Page Name #1",
 "type" : "textfield",
 "validation" : "email",
 "require" : "on",
 "value" : "aValue"
 }
> db.pages.save(page);
"ok"
从那里,一旦添加了所有页面,您现在就可以进行健壮的查询,例如,这将找到textfield类型的所有页面:

db.pages.find({"type":"textfield"});

您还可以使用“值”字段执行更复杂、功能更强大的查询,但我将把它留给您。

您好,谢谢您的反馈,我非常感谢。是的,我在考虑可能的复杂查询,这就是为什么我的第一个计划是将字段单独存储在表中。但我也担心,如果有数千页,那么它可能会占用数据库中的大量空间,因为,是的,我也会存储动态表单。。我想现在我会坚持将整个json字符串存储在表中。您好,谢谢您的推荐,这似乎是一个非常好的主意。但我们已经在使用mysql数据库来存储数据了。如果将其以字符串形式放入数据库,您确实会面临一些严重的问题,不仅仅是真正的搜索,至少是压缩,我可以推荐使用codeigniter节省spaceIm的钱吗?顺便问一下,这会有什么不同吗?或者在数据库中存储json字符串只是一种不好的做法?谢谢。如果它对你有用的话,这是一个不错的做法,只是关系数据库的关键是要有可索引的规范化数据,以便能够轻松地进行查询,你使用它的方式就像你只是将JSON文件读写到磁盘上,这样你就不会充分利用工具的功能。