私はajax呼び出しを実行して、同時に別のページにリダイレクトする関数の一部として実行します。このコードは他のユーザーのウェブサイトで実行されるため、私はpreventDefault()
を使用したくないため、これはユーザーエクスペリエンスに影響を与える可能性があり、過去に試したときに多くの問題を引き起こしています。コールが少しでも失敗した場合、それは大きな問題ではありませんが、私の経験ではすべてのブラウザで一貫して動作することがわかりました。SafariとFirefoxでエラーなしでajax呼び出しが失敗しますが、Chromeで動作します。
AJAX呼び出しが
$.ajax({
type: 'GET',
url: 'URL',
dataType: 'json',
success: function(data) {
// stuff
},
error: function(jqXHR, textStatus, errorThrown) {
console.log("AJAX call failed. Status - " + textStatus);
console.log("Reason - " + errorThrown);
}
});
しかし、ある特定のウェブサイトのために、私はいくつかの本当に奇妙な行動を見ていると、次のようになります。 Chromeで期待どおりに実行されます。しかし、私はSafariとFirefox用の私のコンソールで次のように見ています。 jqXHRオブジェクトの
AJAX call failed. Status - error.
Reason -
readyState
とstatus
プロパティが両方0
URLはので、私はそのためではなくクロスオリジンポリシーの確信している別のドメインを指していないされています。
this oneとthis oneのような他の類似したStackOverflowの質問については、ajax呼び出しが完了する前にブラウザがリダイレクトされるようです。
私は次のことについて不思議です。
- SafariとFirefoxでこのような現象が発生するのはなぜですか? Chromeは非同期リクエストを覚えているだけで、保留中のコールバックを削除しないようにしていますか?
preventDefault
を使用せずに修正できますか?