【问题标题】:Can not get item of JSON-response无法获取 JSON 响应项
【发布时间】:2018-05-22 22:11:25
【问题描述】:

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

我越来越不确定了。但为什么呢?

【问题讨论】:

  • 你需要先解析然后调用.file
  • 你在哪里打印数据和data.file的代码?
  • 你用什么来发出 ajax 请求?通常框架可以选择让它为你解析响应为 JSON。
  • 就是这样。我必须告诉框架将响应解析为 JSON。谢谢!

标签: javascript json ajax object vue.js


【解决方案1】:

您将其作为字符串接收。您必须先将其解析为 JSON:

data = JSON.parse(data);
console.log( data.file )

其他选项:或者您可以根据要求定义它,添加 dataType: "json" 以便您收到 json。

喜欢:

   $.ajax(
   {

      type: "POST",
      dataType: "json",
      url: url,
      data: {},
      success: function( response ) {}
  }

【讨论】:

  • 如果使用相同的变量名,则不需要新的var。可能会在严格模式下中断
【解决方案2】:

我认为问题在于data 是一个JSON 字符串,所以它会在控制台中打印出来,但是当你调用data.file 时它会是undefined。因为string 没有file 属性。

在访问file 属性之前,您需要解析您的data 对象:

data = JSON.parse(data);
console.log(data.file);

【讨论】:

    【解决方案3】:

    您的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();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多