2

我正在使用 jquery Nestable ( http://dbushell.github.io/Nestable/ )。

当我更改可嵌套元素的顺序时,我试图从中截取数据。

$('.dd').nestable().on('change', function() {
  var json_text = $('.dd').nestable('serialize');
  $.post("/includes/processes/core.php", {
    cmd: 'nestable',
    table: table,
    data: json_text
  }, function(response){
    alert(response);
  });
});

在 core.php 我已经完成了:

$data = $_POST['data'];
$data = json_decode($data, true);
function parseJsonArray($jsonArray, $parentID = 0) {
  $return = array();
  foreach ($jsonArray as $subArray) {
    $returnSubSubArray = array();
    if (isset($subArray['children'])) {
  $returnSubSubArray = parseJsonArray($subArray['children'], $subArray['id']);
    }
    $return[] = array('id' => $subArray['id'], 'parentID' => $parentID);
    $return = array_merge($return, $returnSubSubArray);
  }
  return $return;
}

$readbleArray = parseJsonArray($data);

比我必须操纵这个数组,但我不能继续,因为响应是:

"json_decode() expects parameter 1 to be string, array given in core.php on line (where is "$data = json_decode($data, true;")"

如果我用 json_encode($data) 更改 json_decode($data, true) 这是响应:

"Invalid argument supplied for foreach() in core.php on line (where is "foreach ($jsonArray as $subArray);")"

请帮我..

4

2 回答 2

1

使用 JSON.stringify。它会将您的 javascript 对象转换为 JSON 字符串,这将允许您发布它:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

您可以在 PHP 中对其进行解码。为此,请在您的 jQuery 代码中替换:

data: json_text

和:

data: {json_text: JSON.stringify(json_text)}
于 2014-01-20T21:12:01.277 回答
1

尝试删除此行,因为 $.post 不进行 json 编码。

$data = json_decode($data, true);
于 2014-01-20T21:15:14.503 回答