11

パラメータを入力すると、成功/エラー/完了のコールバックは得られませんが、Fiddler は 200 応答を示し、要求された json データはそこにあります。 それが鍵です。Fiddler は、往復が成功したことを示しており、要求されたデータはクライアント側にあり、正常な状態です。 問題は、バックボーンの成功/失敗/完了が呼び出されないことです。ただ大きな何も得ません。

まったく同じベース URL を使用して、パラメーターを取り出す (そして並行して Web サービスからパラメーターを削除する) と、成功と完了の両方がトリガーされます。以下は私のフェッチ「with」パラメータです:

myModel.fetch({
    data: {
        name: 'Bob',
        userid: '1',
        usertype: 'new'
    }
}, {
    success: (function () {
        alert(' Service request success: ');
    }),
    error: (function (e) {
        alert(' Service request failure: ' + e);
    }),
    complete: (function (e) {
        alert(' Service request completed ');
    })
});

バックボーンの動作はどのように異なるのでしょうか? パラメータの有無にかかわらず、同じ URL です。

違いは、バックボーン フェッチの内部では、"with" パラメーターのシナリオは post であり、"with" パラメーターは単純な get であるということだと思います。IE コンソールは、わずかに異なる出力でこれを反映しています。

"With" パラメータを使用すると、IE ブラウザ コンソールに、リクエストに CORS が必要であるという警告 (エラーではなく警告) が表示されます。

!SEC7118: http://example.com/service/myservice.asmx/myoperation?name=Bob&userid=1&usertype=newの XMLHttpRequest にはCross Origin Resource Sharing (CORS) が必要です。

「ねえ、あなたはクロスオリジンリクエストを行い、私はそれを通過させました」と言っているだけだと思います。パラメータが「ない」場合、その警告は表示されません。サービスヘッダーを次のように設定しています:

Access-Control-Allow-Origin: *

そして、実際にそのポリシーを反映した応答が返ってきます。

問題は、バックボーンの成功/エラー/完了のコールバックがパラメーターを「使用して」トリガーしないのはなぜですか? データは元に戻ります。バックボーンは成功を反映するべきではありませんか?

4

1 に答える 1

15

、、、およびメソッドを同じオブジェクトに配置しsuccessます。単一のオブジェクトのみが存在する必要があります。内部では、Backbone は単純にjQuery のメソッドを使用するため、渡されたオブジェクトは、渡された設定オブジェクトに含まれる可能性のある任意のプロパティを使用できます。errorcompletedataajax()fetch()$.ajax()

myModel.fetch({
    data: {
        name: 'Bob',
        userid: '1',
        usertype: 'new'
    },
    success: (function () {
        alert(' Service request success: ');
    }),
    error: (function (e) {
        alert(' Service request failure: ' + e);
    }),
    complete: (function (e) {
        alert(' Service request completed ');
    })
});
于 2013-08-15T23:14:57.410 に答える