骨干同步回调总是使用错误

时间:2012-07-24 01:22:30

标签: javascript backbone.js

在使用Backbone同步时,我很难弄清楚如何使回调正常工作。我正在查看我的返回数据包,响应代码是200,这是没有错误,但警报("失败")语句被调用。我正在请求来自java servlet的响应。伙计们好吗?感谢

Backbone.sync("read", this.model, {
  url : "some url",
    success: function(model, response) {
      alert(response);
    },
    error: function(model, response) {
      alert("fail");
    }
});

2 个答案:

答案 0 :(得分:2)

我不明白你在做什么......

使用此方法而不是同步:

model.fetch();
model.save();
model.destroy();

他们会调用同步,并且效果很好。

我认为没有必要覆盖原始同步,这已经足够了。我为示例应用程序创建了一个模拟同步,这是它的工作原理:

var User = Backbone.Model.extend({
    notAllowedEmailHost: "gmail.com",
    sync: function (method, model, options) {
        if (method == "read" || method == "delete")
            throw new Error("Example is not prepared for these methods.");
        var email = model.get("email");
        var status = 201;
        if (email.indexOf(this.notAllowedEmailHost) != -1)
            status = 400;
        else if (method == "update")
            status = 500;
        options.xhr = {
            status: status
        };
        if (status >= 400)
            options.error(options.xhr);
        else
            options.success({
                id: 1
            });
    }
});

上面的方法围绕回调创建包装函数,并且同步地使用结果调用这些包装器。所以同步回调不是你通过调用fetch,save或destroy函数给出的回调......

答案 1 :(得分:1)

确保您的servlet返回一个JSON对象,即使它是空的。这解决了我的问题。