如何解决“Uncaught (in promise) TypeError: response.body.forEach is not a function”? (vue.js 2)

Posted

技术标签:

【中文标题】如何解决“Uncaught (in promise) TypeError: response.body.forEach is not a function”? (vue.js 2)【英文标题】:How to solve "Uncaught (in promise) TypeError: response.body.forEach is not a function" ? (vue.js 2) 【发布时间】:2017-06-28 05:41:15 【问题描述】:

我的组件 vue.js 是这样的:

<script>
  export default
    name: 'CategoryBsSelect',

    template: '\
      <select class="form-control" v-model="selected" required>\
        <option v-for="option in options" v-bind:value="option.id" v-bind:disabled="option.disabled"> option.name </option>\
      </select>',

    //props: list: type: String, default: '',

    mounted() 
        this.fetchList();
    ,

    data() 
      return 
        selected: '',
        options: [id: '', name: 'Select Category']
      ;
    ,

    methods: 
        fetchList: function() 
            this.$http.post(window.BaseUrl+'/member/category/list').then(function (response) 
                //this.$set('list', response.data);
                console.log(JSON.stringify(response.body))
                response.body.forEach(function(item)
                    this.$set(this.options, item.id, item);
                , this);
            );
        ,
    

  ;

</script>

console.log(JSON.stringify(response.body)) 的结果:

"20":"类别 1","21":"类别 2","22":"类别 3"

我想显示对选择值的响应。但是当执行时,在控制台上存在这样的错误:

Uncaught (in promise) TypeError: response.body.forEach is not a 功能 在 VueComponent。

有没有人可以帮助我?

【问题讨论】:

对象没有forEach - 使用Object.keys 您希望itemitem.id 是什么? 【参考方案1】:

使用

Object.keys(response.body).map(function(key) 
    this.$set(this.options, key, response.body[key]);
);

【讨论】:

为什么是map?您的函数没有返回任何内容。 为什么不使用简单的for 循环?

以上是关于如何解决“Uncaught (in promise) TypeError: response.body.forEach is not a function”? (vue.js 2)的主要内容,如果未能解决你的问题,请参考以下文章

解决Uncaught (in promise) reason的问题

解决Uncaught (in promise) reason的问题

前端Uncaught (in promise) 的解决方法及原因

解决 Uncaught (in promise) DOMException: play() failed 因为用户没有先与文档交互

解决vue3 vue-pdf报错Uncaught (in promise) TypeError: h is not a function

解决vue3 vue-pdf报错Uncaught (in promise) TypeError: h is not a function