我正在使用 Blueimp 的 JQuery 文件上传插件,因此上传成功后的回调函数为:
$('#fileupload').fileupload('send', {files: filesList})
.success(function (result, textStatus, jqXHR) { console.log('success'); })
.error(function (jqXHR, textStatus, errorThrown) { console.log('error'); })
.complete(function (result, textStatus, jqXHR) {
console.log('complete: ' + JSON.stringify(result));
console.log(result.responseText.files[0].name);
});
所以我所关注的只是 .complete
函数。第一个 console.log
返回:
complete: {"readyState":4,"responseText":"{"files":[{"name":"video.mp4","type":"video/mp4","size":2348842}]}","responseJSON":{"files":[{"name":"video.mp4","type":"video/mp4","size":2348842}]},"status":201,"statusText":"Created"}
complete
从技术上讲是 result
,其下是 responseText
,其下是 files
,这是一个数组,name
是该数组中的键/属性。
因此,当我尝试 console.log
result.responseText.files[0].name
时,它显示 Uncaught TypeError: Cannot read property '0'未定义
。
有人可以找出问题所在吗? 谢谢!
最佳答案
result.responseText
是一个字符串
您需要转换为对象:JSON.parse(result.responseText)
response = JSON.parse(result.responseText);
console.log(response.files[0].name);
可以工作
关于javascript - 访问嵌套 JSON 对象和数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34834066/