昨日google chrome update to Version 75.0.3770.80 (Official Build) (64-bit)
の後で奇妙な問題に直面しています。
私はLaravelを使用しています。Ajaxを使用してタスクを作成しようとすると、Googleから2回追加されますChromeのみですが、同じタスクをfirefoxまたは別のブラウザでは、単一のエントリで正常に機能します。この問題はchrome updateの後にのみ発生します。それ以外の場合は、以前は正常に機能していました。この新しいバージョンに影響を与える可能性のある変更はありますか?私の機能?
私は問題を分析しようとしましたが、chrome and firefox。globalTask
リクエストがchromeですが、サーバー側で正しく実行されていて、データベースにエントリを追加していると思います。問題の解決を手伝ってくれる人はいますか?
コード
$.ajax({
url: "/globalTask",
type: "POST",
headers: {
'X-CSRF-Token': 'hgdhgsddshjfs214dsf4s56f',
},
async: false,
data: data,
success: function (response) {
}
});
これがpreventDefaultに関連していることがわかったと思います... Chrome 75は、JSで作成された場合、フォームでpreventDefault()を実行しない場合、formPostを終了しますオリジナルイベント。
送信ボタンのタイプが「送信」または「ボタン」かどうかを確認します。 ajaxがフォームを送信する場合、htmlボタンのタイプは「ボタン」でなければなりません。そうでない場合、両方とも送信されます。これで問題は解決したと思います。
フォームの送信時にこの問題(2つのHTTP POST、そのうちの1つは「キャンセル」)も私たちのサイトで見ています。 ASP.NET MVC 5とJQuery 1.11およびBootstrap 3.0.3。
JQueryを最新バージョン(3.4.1)に更新すると、問題が解決しました。 Chromeのネットワークトレースを見るとChrome 74でイニシエーターは「その他」と言いますが、Chrome 75でリクエストの「その他」が表示され、2番目のリクエストには、JQueryのトリガー関数に移動するJScriptトレースが含まれます。
最初にこのコードスニペットをログインページに追加し、問題を修正しました。ネットワークトレースは単一のリクエストを示していますが、これは「その他」ではなく、イニシエーターとしてのJQueryスタックトレースでした。このコードがどのように問題を「修正」したかわからないので、私はバンドエイドとしてそれを避けます。
// Chrome 75 is having double submit problems. This change stops that behavior, but may be an issue in JQuery 1.x
$(document).on('submit', 'form', function () {
var button = $(this).find('input[type="submit"]');
button.attr('disabled', 'disabled');
});
Googleが問題を調査しているようです: Chromiumバグレポート
Chrome拡張機能を確認してください。私の場合、新しいBit Torrent Webに付属している "Safe Torrent Scanner"拡張機能を無効にすると問題が解決しました。