パラメータを入力すると、成功/エラー/完了のコールバックは得られませんが、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: *
そして、実際にそのポリシーを反映した応答が返ってきます。
問題は、バックボーンの成功/エラー/完了のコールバックがパラメーターを「使用して」トリガーしないのはなぜですか? データは元に戻ります。バックボーンは成功を反映するべきではありませんか?