JQuery - JSON.stringify不起作用。

时间:2015-06-03 18:22:44

标签: javascript jquery json

伙计我正在使用嵌套菜单,当客户端移动某个项目时,我正尝试通过API进行更新。我正在使用这个jquery插件http://johnny.github.io/jquery-sortable/ 这个插件有onDrop方法:

    $(function () {
      var group = $("ol.serialization").sortable({
        group: 'serialization',
        onDrop: function (item, container, _super) {
          var data = group.sortable("serialize").get();

          var jsonString = JSON.stringify(data, null, ' ');
          console.log(jsonString);

          //var jsonString = { name: "John", time: "2pm" };

          $.post( "http://local.api/v1.0/SL-TEST-API-KEY/AbstractBookMenu/", jsonString , function (res) { 
            console.log(res);
          });

          _super(item, container)
        }
      });
    });

我的api目前有这个代码:

Flight::route('POST /v1.0/@key/AbstractBookMenu/', function($key){
    Flight::set('ACCOUNT', Flight::auth()->check(Flight::request(), Flight::get('EVENTLOGIC'), $key));
    $account = Flight::get('ACCOUNT');  

    print_r($_POST);

    die();

});

我想确保收到我的发布数据,当我在控制台中打印res响应时我收到了一个空数组。但是,如果我试图在控制台中看到变量jsonString中的数据,我可以看到:

[
 [
  {
   "id": 22,
   "position": 0,
   "children": [
    [
     {
      "id": 21,
      "position": 0,
      "children": [
       []
      ]
     },
     {
      "id": 24,
      "position": 0
     },
     {
      "id": 29,
      "position": 0
     }
    ]
   ]
  },
  {
   "id": 25,
   "position": 0,
   "children": [
    []
   ]
  },
  {
   "id": 26,
   "position": 0,
   "children": [
    [
     {
      "id": 27,
      "position": 0
     }
    ]
   ]
  },
  {
   "id": 45,
   "position": 30,
   "children": [
    []
   ]
  }
 ]
]

例如,如果我尝试使用我的注释代码

var jsonString = { name: "John", time: "2pm" };

我的API回复是:

Array
(
    [name] => John
    [time] => 2pm
)

即便如此,如果我尝试替换所有我的json数据[[{“id”:21,“position”:0,“children”:...我收到此回复:

Array
(
    [undefined] => 
)

我不确定我做错了什么。如何在我的API中获取此数据?有什么建议吗?

1 个答案:

答案 0 :(得分:2)

你应该在最外层有一个对象,如下所示:

{
  "mydata": [[{"id" ... // your data goes here
}