1

バックボーン同期を使用しているときにコールバックを正しく機能させる方法を理解するのに苦労しています。リターン パケットを確認していますが、応答コードは 200 で、エラーではありませんが、alert("fail") ステートメントが呼び出されます。Java サーブレットからの応答を要求しています。アイデアはありますか?ありがとう

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

2 に答える 2

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
            });
    }
});

上記のメソッドはコールバックの周りにラッパー関数を作成し、同期してそれらのラッパーが結果で呼び出されます。したがって、同期中のコールバックは、フェッチ、保存、または破棄関数の呼び出しによって提供されるコールバックではありません...

于 2013-05-20T00:27:55.363 に答える
1

空であっても、サーブレットが JSON オブジェクトを返すことを確認してください。これにより、私の場合の問題が修正されました。

于 2014-08-01T11:12:19.660 に答える