AJAX请求后MySQL longtext列maindata属性获取报undefined问题
解决MySQL longtext存储JSON后AJAX解析无法访问属性的问题
问题本质
你当前拿到的maindata是二次转义的JSON字符串——第一次$.parseJSON只解析了外层的数组结构,但maindata字段的值仍然是带转义符的JSON字符串,不是可直接访问的对象,所以直接用maindata["address"]会返回undefined。
解决方案
方案1:前端二次解析(快速临时解决)
修改循环代码,对每个maindata字符串再做一次JSON解析:
for (var i=0;i<pass_data.length;i++){ // 先把maindata转成JSON对象 var mainDataObj = $.parseJSON(pass_data[i].maindata); alert(mainDataObj["address"]); // 现在能正常获取地址值 }
方案2:后端直接返回解析后的对象(更规范推荐)
从数据库取出MAINDATA字段后,后端先把这个JSON字符串解析成对象/数组,再整体返回JSON给前端。以PHP为例:
// 假设从数据库查询得到$dbResult $dbResult['maindata'] = json_decode($dbResult['maindata'], true); // 转成关联数组 echo json_encode($dbResult); // 整体编码为JSON返回前端
这样前端拿到的maindata就是直接可用的对象,不需要二次解析,直接用pass_data[i].maindata.address就能访问属性。
问题原因
你在MySQL的longtext列里存的是JSON格式的字符串,后端查询返回时没有对这个字段做解析,直接把它作为普通字符串返回,导致前端第一次JSON解析只能处理外层的数组结构,内层的maindata还是带转义的字符串,自然无法直接访问对象属性。
内容的提问来源于stack exchange,提问作者soumitra
相关产品推荐
相关产品推荐

