昨天google chrome update to Version 75.0.3770.80 (Official Build) (64-bit)
之后,我面临一个奇怪的问题。
我正在使用Laravel,如果我尝试使用Ajax创建任务,则仅从Google Chrome浏览器添加两次,但是如果我在firefox或其他浏览器中创建同一任务,则只需输入一次即可正常工作。我仅在chrome更新后才遇到此问题,否则之前工作正常。这个新版本有什么变化会影响我的功能吗?
我试图分析此问题,并且发现以下铬和Firefox图像具有以下差异。 globalTask
请求在chrome中显示了一个已取消的请求,但我认为它在服务器端正确执行,并在数据库中添加了一个条目。谁能帮我解决问题?
代码
$.ajax({
url: "/globalTask",
type: "POST",
headers: {
'X-CSRF-Token': 'hgdhgsddshjfs214dsf4s56f',
},
async: false,
data: data,
success: function (response) {
}
});
答案 0 :(得分:1)
我想我发现这与preventDefault有关...在我看来,如果您不对原始事件进行preventDefault(),Chrome 75会终止通过FormPost(如果通过JS生成)。
答案 1 :(得分:0)
检查,提交按钮的类型是否为“提交”或“按钮”。如果您的Ajax提交表单,则html按钮的类型应为“按钮”,否则两者均被提交。我认为这为我解决了问题。
答案 2 :(得分:0)
在我们以任何形式提交的网站中,我也看到了此问题(两个HTTP POST,其中一个已“取消”)。我们正在将ASP.NET MVC 5与JQuery 1.11和Bootstrap 3.0.3。一起使用。
将JQuery更新到最新版本(3.4.1)解决了我们的问题。在Chrome 74中查看Chrome Network跟踪时,启动器会说“ Other”,但是在Chrome 75中,其中一个请求将显示“ Other”,第二个请求将具有转到JQuery的触发函数的JScript跟踪。
最初将此代码段添加到了我们的登录页面,并解决了该问题。 Network跟踪显示单个请求,但这是作为Initiator而不是'Other'的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 bug report
答案 3 :(得分:0)
检查您的Chrome扩展程序。就我而言,当我禁用了新的Bit Torrent Web附带的“ Safe Torrent Scanner”扩展程序时,问题已解决。