如何将jquery.nestable序列化对象转为数组?适配PHP读取
我来给你捋捋两种最优方案,看哪种更适配你的场景~
方案一:前端JavaScript提前处理(推荐)
直接在生成JSON字符串之前,把Nestable返回的对象数组转换成纯ID数组,这样POST给PHP的就是你想要的格式,后端直接拿来用就行,省得再额外处理。
- 代码示例:
// 先获取Nestable序列化后的对象数组 const serializedData = list.nestable('serialize'); // 用map方法提取每个对象里的id,生成纯ID数组 const idArray = serializedData.map(item => item.id); // 转成JSON字符串(POST时用JSON格式传递更稳妥) const myList = JSON.stringify(idArray); // 发起POST请求,比如用jQuery的ajax $.ajax({ url: '你的PHP处理文件.php', type: 'POST', data: { ids: myList }, success: function(response) { // 处理后端返回的结果 } });
对应的PHP接收代码也很简单,直接解码就拿到纯ID数组:
$ids = json_decode($_POST['ids'], true); // $ids 就是 [32, 29, 30],直接用就行
方案二:后端PHP处理原始JSON
如果不想改动前端代码,或者有特殊需求必须传递原始的对象数组JSON,那后端用PHP自带的array_column函数就能快速提取ID,效率很高。
- 代码示例:
// 接收前端POST过来的原始JSON数据 $rawJson = $_POST['myList']; // 解码成关联数组(第二个参数传true,会把JSON对象转成PHP数组而不是stdClass对象) $objectArray = json_decode($rawJson, true); // 提取所有元素的id字段,生成纯ID数组 $idArray = array_column($objectArray, 'id'); // 现在$idArray就是你需要的[32,29,30]了
哪个方案更优?
如果数据量不大,两种方案都能用,但前端提前处理是更优选择:
- 传输的JSON字符串更短,节省带宽;
- 减少后端的计算开销,让后端更专注于核心业务逻辑;
- 数据格式更直观,后续维护起来也更清晰。
内容的提问来源于stack exchange,提问作者user8735467239
相关产品推荐
相关产品推荐

