为什么浏览器在ajax之后请求图片?

时间:2014-03-10 03:25:01

标签: ajax backbone.js browser

我正在使用骨干和nodejs来处理单页webapp。

我有一个视图,里面有一个模型(博客文章)。当用户点击“喜欢”按钮时,视图将启动ajax将用户'id发送到服务器,让喜欢的数字+1。

它看起来像这样:

        this.model.save({
            likedBy: userModel.get('_id')
        }, {
            url: '/posts/' + this.model.get('_id') + '/like',
            success: function() {
                // do something
            },
            patch: true
        });

我的问题是,当这段代码运行时。浏览器启动http请求以检索屏幕上的所有图像,并重新渲染它们。所以当用户点击之类的按钮后,屏幕会“震动”。

到处都没有发生这种情况,但是造成这种情况的原因是什么?如何阻止“摇晃”?

感谢任何进步。

1 个答案:

答案 0 :(得分:0)

当你调用this.model.save()时,模型将更新服务器中的数据并调用视图的渲染功能。 render方法将创建一个新的DOM元素并替换旧的DOM元素,这就是导致闪烁的原因(它再次请求图像)。

我假设您有一个针对Like操作的API调用(如果不是最好有一个),那么您可以通过添加如下函数来对模型执行类似操作的AJAX调用:

addLike : function(data) {
 Backbone.ajax({
            url: '/api/like/'+ this.get('id'),
            method: 'POST',
            data: data,
            success: options.success,
            error: options.error
        });

}