0

我有一个 RESTful JSON api,用于执行这样的服务器端调用:

Servlet.prototype.ajaxJSON = function (jobject, func, context) {
    var self = this;
    $.getJSON(this.name, jobject, function (json) {

        ...

    }).fail(function(jqXHR, status, errorThrown) {
        var callname = JSON.stringify(jobject).slice(1,JSON.stringify(jobject).indexOf(':'));

        if(func !== null) {
            func(JSON.parse('{' + callname+': {"error": "Server Error:' + errorThrown + '"}}'));
        }
    });
};

但是,当我尝试在模型中使用错误回调时:

newComment.save(null, {
    'success': _.bind(function(model, response) {

        ...

    }, this),
    'error': function(model, error) {
        errorAlert(error, 'Could not post comment');
    }
});

出于某种原因,我得到了一个错误参数的主干模型。我已经浏览了代码,看起来 Backbone 有某种自定义的 wraperror 方法,它把一切都搞砸了。谁能告诉我这里发生了什么?谢谢!

4

1 回答 1

0

弄清楚了。问题出在我的model.sync方法上。我有一个条件来检查看起来像这样的错误:

if(_.isObject(json.post_comment) && json.post_comment.error) {
    options.error(model, json.post_comment.error, options);
}

那需要是:

if(_.isObject(json.post_comment) && json.post_comment.error) {
    options.error(json.post_comment.error);
}

猜猜我读错了文档。:/

于 2013-07-29T19:18:33.117 回答