无法获取JSON响应项

时间:2017-12-08 16:14:01

标签: javascript json ajax object vue.js

我正在尝试创建一个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);

我未定义。但为什么呢?

3 个答案:

答案 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();
    }