我正在尝试创建一个AJAX调用 - 我想使用响应。
这是我在浏览器的网络控制台中看到的回复:
{
"message": "success",
"file": "dump.xml"
}
这就是我想要做的事情:
onComplete: function onComplete(data) {
var vm = this;
console.log(data.file);
this.$set('upload', data);
this.$set('filename', file);
this.modal.show();
}
好。好吧 - 我收到了回复,如果我将data
写入console.log,我就得到了这个:
{"message":"success","file":"dump.xml"}
但如果我尝试这样做:
console.log(data.file);
我未定义。但为什么呢?
答案 0 :(得分:2)
您将收到它作为字符串。您必须先通过以下方式将其解析为JSON:
data = JSON.parse(data);
console.log( data.file )
其他选项:或者您可以根据要求定义它,添加dataType: "json"
以便您将收到json。
像:
$.ajax(
{
type: "POST",
dataType: "json",
url: url,
data: {},
success: function( response ) {}
}
答案 1 :(得分:1)
我认为问题是data
是一个JSON字符串,因此它将在控制台中打印,但是当您致电data.file
时,它将是undefined
。由于string
没有file
属性。
在访问data
属性之前,您需要解析file
对象:
data = JSON.parse(data);
console.log(data.file);
答案 2 :(得分:0)
您的data
很可能是JSON
字符串。您已将其解析为Object
,如下所示
onComplete: function onComplete(data) {
data = JSON.parse(data)
var vm = this;
console.log(data.file);
this.$set('upload', data);
this.$set('filename', file);
this.modal.show();
}