response.data是一个对象,可以得到
response.data.data子对象就无法得到,undefined。
旧的浏览器是正常执行的,新的浏览器才这样出错。
这是哪里的问题?
var resource = this.$resource('xxx', {});
resource.get({}).then(function (response) {
尝试过修改header头,不行。
尝试过把字符串直接var obj= JSON.parse, 是可以的。
但是这样修改太麻烦了,几百个地方都有修改。
有更简单的办法不?
let _data = JSON.parse(response.data)
估计是JSON字符串,转成对象。
是的。这样修改可以。
但是一个项目我都不知道有多少页面,每个页面每个这样修改受不了呀。
有简单的办法不?
@一步之遥>>: 那估计只能考虑在后端处理了,统一返回对象。
@码上就有钱: 后端的返回是没问题的。因为旧的浏览器能解析,而且我看了一下json结果好像没什么问题
@一步之遥>>: 那继续等园友回答了,暂时不知道怎么办
@码上就有钱: response.data 和 response.bodyText 有啥区别? body还是bodyText?
@一步之遥>>: 取body呗 后者明显是字符串的对象了
改为分两步试下,var obj = response.data,在用obj.data
弄个json包就可以了推荐阿里的
放在服务器端? 然后这个json包就能帮助前端response.data.data 解析?
@一步之遥>>: 比如说你再数据库里差出来一个集合的数据,然后被json包转换一下直接返回给前台,前台不用做任何处理就能解析
@DanBrown: 查看过了,现在后台返回的结果是正确的json结构。旧版浏览器都能解析的。
如果你的json格式是严格准确的,那么转一次就行了的。如果像这种:
{
"data": {
"value": "{"name":"yang","value":"wen"}"
}
}
那就只能一步一步转了。
什么新浏览器呀?
chrome新版。
这是个老项目。
1.Ctrl+Shift+J 打开开发者工具,进行调试。输出response.data的内容——使用console.log(...)。
2.javascript或jquery的版本不对吧,jquery更新很快。
console.log输出的response.data是个对象,字符串。json格式正确
但是输出respnose.data.data就是undefined。
@一步之遥>>: 截个图来看看数据会更好分析,当然,你要的简单方法我给不了,
有人说是vue-source版本可能有bug
这个怎么更新版本到服务器呀?
如果是历史项目,你可以修改基础库的部分,如ajax请求的地方也是个方式