虽然我得到了响应,但就绪状态仍为1

时间:2017-08-14 22:50:41

标签: javascript java ajax backbone.js

          toggleCompletedCheck : function(e) {
            e.stopPropagation();
            e.stopImmediatePropagation();
            var key = $(e.currentTarget).attr("id");
            this.model = todoCollection.findWhere({
                key : key
            });
            this.model.toggle("completed", true);
            this.option.collection = todoCollection.add(this.model);
            var email = this.model.get("email");
            var title = this.model.get("title");
            var key = this.model.get("key");
            var status = this.model.get("status");
            var completed = this.model.get("completed");
            this.updateUserData(email, key, title, completed, status);
            returnValue = this.model.save();
            console.log(returnValue);
        },

就绪状态在功能中仍为1。我使用的变量是一个窗口对象(returnValue)。当我在控制台中再次打印对象时(从chrome浏览器)它显示我就绪状态4也允许我使用returnValue.responseText访问responseText。我使用backbone.js将输入保存到后端。这将返回保存的responseText。但反过来,当我尝试使用undefined时,我无法访问它。如何在此函数中获取我需要的responseText。

1 个答案:

答案 0 :(得分:1)

Backbone' model.save()方法是异步的。它返回一个值(javascript xhr对象),但请求在返回时没有完成。

要使用已完成的回复,您通常会将successerror个回调传递给save方法(docs here):

this.model.save(null, {
    success: function(model, response, options) {
        // do something with the response
    },
    error: function(model, response, options) {
        // do something with the response
    }
});

当您习惯return来自函数的响应时,这可能有点调整,但使用回调几乎总是可以实现等效功能。