ajax获取 json有数据, 取值为undefined 原因及解决办法.

在前后端分离的Java项目中,出现前端能拿到JSON数据却无法取值的问题。问题原因是后端忘设返回类型为JSON,或前端忘设JSON类型。文章给出问题复现情况及解决思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ajax获取 json有数据, 取值为undefined 原因及解决办法.

问题复现:

前后端分离的java项目, idea中可以打印出数据, 前端可以拿到json数据,但是无法取值.
可以显示
在这里插入图片描述

原因:后端忘了设置返回类型为 json, 或者 前端忘了设置json类型

解决办法

办法1:前端:					var dataObj=eval("("+data+")");
办法2:后端:             response.setContentType("application/json;charset=utf-8");
在使用AJAX时,有时会遇到返回的JSON数据无法正确取值,提示undefined的问题。这可能是因为在不同版本的jQuery中对JSON数据格式进行了严格限制。在jQuery 1.4中,要求对字符串都使用""限定,而在之前的版本中可能不需要。所以,如果你的代码是基于jQuery 1.3编写的,在升级到jQuery 1.4后,可能需要修改JSON数据的格式。例如,原先的数据格式为{ isOk:true, msg:'传输成功' },在jQuery 1.4中需要修改为{ "isOk":true, "msg":"传输成功" }。这样修改后,就可以正确取值了。另外,还可以在ajax请求中指定dataType为"json",以确保正确解析返回的JSON数据。例如: ```javascript var dat = {id:"123456", name:"over"}; $.ajax({ type: "POST", url: "/Test.ashx", data: dat, dataType: "json", success: function(data) { if (data.isOk == true) { alert(data.msg); } else { alert(data.msg); } }, error: function() { alert("信息提交失败"); } }); ``` 如果你使用的是$.post方法,也需要在最后添加一个数据类型"json",例如: ```javascript $.post("/Test.ashx", dat, function(data) { alert(data.isOk); }, "json"); ``` 另外,如果后端返回的JSON数据有时是字符串,有时是对象,你可以使用JSON.parse方法将字符串转换为对象。例如: ```javascript this.res = JSON.parse(res.data); ``` 这样就可以正确取得后端返回的JSON数据了。希望这些解决方法对你有帮助。 #### 引用[.reference_title] - *1* [Jqueryajax传输json数据显示undefined错误](https://blog.csdn.net/jenny8080/article/details/84880406)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [uni-app从后端获取JSON数据,使用时显示undefined](https://blog.csdn.net/qq_41884068/article/details/105820814)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值