【问题标题】:AJAX and Vue.js 2 not workingAJAX 和 Vue.js 2 不工作
【发布时间】:2017-11-11 07:03:52
【问题描述】:

我正在尝试将 AJAX 与 Vue.js 2 一起使用:

let remoteUrl = '...................';

var app = new Vue({
    el: '#app',
    data: {
        items: []
    },
    created: function () {
        this.getFilms();
    },
    methods: {
        getFilms: function () {
            $.ajax({
                type: "GET",
                url: remoteUrl
            }).done(function (res) {
                console.log(res);
                self.items = res;
            }).fail(function (err) {
                alert("ERRORE: " + err);
            });
        }
    }

});

这是html:

            <table>
                <tbody>
                    <tr v-for="item in items">
                        <td>{{item.nome}}</td>
                        <td>{{item.data}}</td>
                        <td>{{item.size}}</td>
                        <td>{{item.ext}}</td>
                    </tr>
                </tbody>
            </table>
        </div>

我在控制台中看到了输出。 但桌子仍然是空的。 我在 AJAX 调用中看不到任何错误。 我尝试了created和mounted。 为什么?

【问题讨论】:

  • 等等,如果你看到控制台输出,这意味着AJAX调用成功。所以你遇到的这个问题与 AJAX 完全无关。 self 定义在哪里?
  • 您没有声明与self.items = res 一起使用的self

标签: javascript ajax vue.js


【解决方案1】:

您只需在 remoteUrl 声明下方添加 let self = {},除非您已经在其他地方声明了 self

这应该可以解决问题(如果 nomedatasizeext 是您的 res 的属性)。

【讨论】:

    【解决方案2】:

    我不明白为什么需要将 jquery 与 Vue 一起使用。 如果您使用的是 Vue,那么只需使用 Vue 编写即可。 如果您使用的是 ng2/1,则只需写入 ng2/1.x

    这是一个很大的现实,我不想把它告诉所有 Jquery 人:- 作为 ng5,到 2018 年年中,我认为 ng9 即将到来,没有人会在 jquery 中编写代码;它将是单独的 jquery -或-单独的 angular -或-单独的 Vue.js。

    同时,所有 jquery 人都可以继续制作 jquery+ng 或 jquery+Vue 的热点,但绝对不推荐这样做。

    我会建议离开 jquery,只是为了保持相关性。 关注这个讨论: Vue.js and jQuery?

    Jquery:把它带到谷仓后面射击它。 你越快放弃一个坏主意,你就能越早开始另一个更有希望的想法。

    【讨论】:

    【解决方案3】:

    好的,我用 vue-resource 替换了 jquery。 现在一切正常,谢谢!!

    let remoteUrl = '..............';
    
    var app = new Vue({
        el: '#app',
        data: {
            items: []
        },
        created: function () {
            this.getFilms();
        },
        methods: {
            getFilms: function () {
                this.$http.get(remoteUrl).then(response => {
                    this.items = response.body;
                }, response => {
                    alert(response);
                });
            }
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 2017-10-18
      • 2017-12-02
      • 2017-09-15
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      • 1970-01-01
      相关资源
      最近更新 更多