怎么处理ajax返回对象被包含问题?(返回对象被包含在result中) 20C

图片说明
图片说明
我想返回结果直接就是result中的值,而不是被包了一层。请问有什么办法可以解决?
返回的结果是上面的图片,下面是api方法,调用success实际上就是封装了一个PageOut类,参数实例化返回。( 环境: ABP+Swagger+LayUI , .NET)
图片说明

7个回答

和ws结果一样会有个d属性,ws不想有d属性可以用Response。Write直接输出json字符串。然后Response。End结束输出

你可以试试这种方法用Response输出序列化为json字符串后的内容

qq_30648687
菜鸟本人 回复showbo: 我有时间试试。。。现在有个紧急任务要做。不管怎么样,还是谢谢了。
大约 2 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 这说的不是很对么?谁点的踩
大约 2 年之前 回复
showbo
支付宝加好友偷能量挖 回复qq_30648687: 和框架结合确实比较麻烦,你看下这个框架是否有类似easyui filter的配置返回需要的节点数据。如果没有你也可以改jquery框架返回数据判断如果有result属性直接诶返回result属性而不是原始的json对象。找到JSON.parse的语句,那附近就是你需要的修改的。如这个cdn文件https://cdn.bootcss.com/jquery/1.7.1/jquery.min.js将if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);改为if(a.JSON&&a.JSON.parse)return(obj= a.JSON.parse(b),obj.result?obj.result:obj);就行了
大约 2 年之前 回复
qq_30648687
菜鸟本人 回复showbo: 。。。。我是可以直接用,但是如果直接用的话,那前端使用LayUI那就浪费了,不符合LayUI数据表格对返回值的格式需求。前端使用框架的目的就是为了加快开发速度,提高开发效率,节省时间。
大约 2 年之前 回复
showbo
支付宝加好友偷能量挖 回复qq_30648687: 你纠结这个干吗呢。不就多个步骤而已,如webservice就多个d你没办法弄掉,只能用Response另外输出内容
大约 2 年之前 回复
qq_30648687
菜鸟本人 回复jasonyan1980: 其实就是异步返回对象的时候ajax自己在结果上又给你包装了一层,但是我没找到到底在哪包的,或者怎么不让它包这一层。。
大约 2 年之前 回复
jasonyan1980
jasonyan1980 这个问题不是特别清楚
大约 2 年之前 回复
weixin_42406993
weixin_42406993 学习学习
大约 2 年之前 回复
qq_30648687
菜鸟本人 回复qq_25855861: .net可以使用吗?
大约 2 年之前 回复
qq_25855861
qq_25855861 JSONArray.toJSONString(object)
大约 2 年之前 回复
qq_30648687
菜鸟本人 Response.Write没有这个方法,Response只有Swagger下的
大约 2 年之前 回复

使用JSONArray.toJSONString(object) 直接返回就可以了

qq_30648687
菜鸟本人 .net怎么用?。。。
大约 2 年之前 回复

看你上面的代码好像是返回了一个列表,但你列表里其实只有一个值?如果是这种情况,你返回的时候直接取列表的第一个值返回就是了,如果必须返回一个列表,其实也没什么问题,只不过就不能直接data.result.name这么调用了,你可以采用each这种方式遍历(我都是用这种方式,后面两种方式应该是存在的,但是可能不是那么用的,以前查过资料,如果用后面两种方式,列表中的key值好像必须是long,一看就这么麻烦,所以建议直接遍历吧),也可以直接试试data.result[0].name或者data.result.get(0).name。

qq_30648687
菜鸟本人 你理解错了,我返回的就是一个类,只不过这个类是我自己根据LayUI需要封装的返回值而已。我是将这个类返回,但是在返回的时候不知道在哪帮我包装了一层,把我的返回结果包在了result里面。我现在要的就是不要那层包装,返回回来直接就是我的类对象
大约 2 年之前 回复

PersonListDto只是我使用工具生成的对应的DTO类名,上面说明通过id拿了,所以只有一列数据的

将它转成json

qq_30648687
菜鸟本人 这已经是json对象了
大约 2 年之前 回复

和ws结果一样会有个d属性,ws不想有d属性可以用Response。Write直接输出json字符串。然后Response。End结束输出

你可以试试这种方法用Response输出序列化为json字符串后的内容将它转成json 或者使用JSONArray.toJSONString(object) 直接返回就可以了
也可以试试data.result[0].name或者data.result.get(0).name。

首先把 结果值赋值给一个变量var result=data.result;然后if(rersult.data!=null) {//进行获取具体的数据 如:alert(rusult.data.name); }

else{alert("结果对象为null")}; 注意关键点:返回结果data下面包含一个对象result,而result下面包含一个对象data,这个data才是要处理的对象。

qq_25580555
喜欢猪猪 回复qq_30648687: 那就直接返回datas对象就好了,不要对返回数据进行封装了。
大约 2 年之前 回复
qq_30648687
菜鸟本人 我的意思是在success中拿到的就是这个结构,不是拿之后在js中处理。因为LayUI数据表格是需要返回它规定格式的json的
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐