jQuery $ .post()JSON对象

我有一个JSON对象

{ "widgetSettings":[{"maxDisplay": 6, "maxPerRow": 2}], "widgets": [ {"wigetID": 1, "show": false, "weight": 0, "widgetTitle": "Widget 1", "widgetColor": "defualt"}, {"wigetID": 2, "show": false, "weight": 0, "widgetTitle": "Widget 2", "widgetColor": "defualt"}, {"wigetID": 3, "show": false, "weight": 0, "widgetTitle": "Widget 3", "widgetColor": "defualt"}, {"wigetID": 4, "show": false, "weight": 0, "widgetTitle": "Widget 4", "widgetColor": "defualt"}, {"wigetID": 5, "show": false, "weight": 0, "widgetTitle": "Widget 5", "widgetColor": "defualt"}, {"wigetID": 6, "show": false, "weight": 0, "widgetTitle": "Widget 6", "widgetColor": "defualt"}, {"wigetID": 7, "show": false, "weight": 0, "widgetTitle": "Widget 7", "widgetColor": "defualt"}, {"wigetID": 8, "show": false, "weight": 0, "widgetTitle": "Widget 8", "widgetColor": "defualt"}, {"wigetID": 9, "show": false, "weight": 0, "widgetTitle": "Widget 9", "widgetColor": "defualt"}, {"wigetID": 10, "show": false, "weight": 0, "widgetTitle": "Widget 10", "widgetColor": "defualt"}, {"wigetID": 11, "show": false, "weight": 0, "widgetTitle": "Widget 11", "widgetColor": "defualt"}, {"wigetID": 12, "show": false, "weight": 0, "widgetTitle": "Widget 12", "widgetColor": "defualt"}, {"wigetID": 13, "show": false, "weight": 0, "widgetTitle": "Widget 13", "widgetColor": "defualt"}, {"wigetID": 14, "show": false, "weight": 0, "widgetTitle": "Widget 14", "widgetColor": "defualt"}, {"wigetID": 15, "show": false, "weight": 0, "widgetTitle": "Widget 15", "widgetColor": "defualt"}, {"wigetID": 16, "show": false, "weight": 0, "widgetTitle": "Widget 16", "widgetColor": "defualt"} ]} 

我想用jQuery将它发布到服务器端脚本,这样我就可以将它保存在数据库中。 当我说保存时,我的意思是作为JSON对象。 然而,当你发布post/获得其他方式时,我发布的JSON格式是我发布的JSON格式,因此我可以保存在数据库中,看起来很迷茫,数据库会留下空值。 我可能做错的任何想法..inheritance人jQuery部分。

 $.post('ui-DashboardWidgetsPost.php', {"dashWidgets":dashboardJSON}, function(msg) { if(msg.error == "yes"){console.log('Error Found: '+ msg.errorMsg);} else { } }); 

编辑 PHP

  

如果要将JSON(作为字符串,而不是实际值)发送到DB,或许您应该将其视为一个?

 $.post('ui-DashboardWidgetsPost.php', { json: dashboardJSON }, function(msg) { msg=jQuery.parseJSON(msg); if (msg.error == "yes") { console.log('Error Found: ' + msg.errorMsg); } else { ... } }); 

您确定您的服务器正在正确解析它吗? 它到目前为止的事实意味着问题出在你的PHP中。

您最好也确保数据正确地通过网络传输,您可以通过Chrome / Firebug的网络选项卡进行操作。 话虽这么说,我更喜欢使用外部数据包嗅探器,如Fiddler(或Mac上的HTTPScoop)。

你可以这样做:

  1. 使用Javascript对象方法JSON.parse
  2. 将其设置为某个POST值,我们会说“json”
  3. 在服务器上读取并解码。 使用PHP,这就像json_decode($ _ POST [‘json’])。

因此,客户端上的代码可能是:

 $.post('ui-DashboardWidgetsPost.php', 'json=' + JSON.parse(dashboardJSON), function(msg) { if(msg.error == "yes"){console.log('Error Found: '+ msg.errorMsg);} else { } }); 

在PHP中:

 $jsonDecoded = json_decode($_POST['json']) 

使用json作为第四个参数。

 $.post('ui-DashboardWidgetsPost.php', dashboardJSON, function(msg) { if(msg.error == "yes"){console.log('Error Found: '+ msg.errorMsg);} else { } }, 'json');