0

モデル インスタンスをコレクションに追加したら、POST リクエストを実行して追加します。次に、サーバーからモデルを取得するために GET 要求が実行されます。GET リクエストではなく、POST リクエストのみにする方法はありますか? また、POST リクエストの成功と失敗に応答する成功とエラーのコールバック関数を取得することは可能ですか?

コレクションには、返される JSON データを解析する URL があるため、これを実行したいので、GET 要求は機能しませんが、POST 要求は機能します。動作しないエンドポイントで GET リクエストを実行したくありません。

4

2 に答える 2

2

GET リクエストは不要です。サーバー上の POST ハンドラーで、モデルを表すクライアントに JSON の結果を返す必要があります。これは、id などの生成されたフィールドがある場合に特に便利です。次に、クライアントの成功コールバックで、POST から返されたモデルを取得できます。

次の例では、成功すると新しいモデルがコレクションに追加されます。クライアント側の検証が失敗するか、POST が失敗した場合に発生するエラー コールバックも含めました。

var isNew = this.model.isNew();
this.model.save({}, {
    success: function(model, response) {
        if (isNew && this.collection) {
            this.collection.add(model);
        }   
    },
    error: function(model, response) {
        var errorMsg;
        // Response may be string (if failed client side validation or an AJAX response (if failed server side)
        if (_.isString(response))
            errorMsg = response;
        else
            errorMsg = response.responseText;
    }
});
于 2012-04-16T03:41:00.763 に答える
1

あなたが従うプロセスは確かに不要です。コレクションを使用createしてモデルを直接追加syncし、同時に(この場合はPOST)を呼び出す必要があります。

例えば:

collection.create({foo: 'bar'});またcollection.create(unsaved_model);

呼び出しの結果はcreate、(保存された)モデルを返すか、falseこれが成功しなかった場合に返されます。beforeさらに、モデルが保存されてコレクションに追加されるのを待つことができます。

collection.create({foo: 'bar'}, {wait: true});

ドキュメントはあなたの友達です。

于 2012-04-17T16:34:50.760 に答える