在使用Backbone同步时,我很难弄清楚如何使回调正常工作。我正在查看我的返回数据包,响应代码是200,这是没有错误,但警报("失败")语句被调用。我正在请求来自java servlet的响应。伙计们好吗?感谢
Backbone.sync("read", this.model, {
url : "some url",
success: function(model, response) {
alert(response);
},
error: function(model, response) {
alert("fail");
}
});
答案 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对象,即使它是空的。这解决了我的问题。