web-dev-qa-db-fra.com

Demandes en double après chrome vers la version 75.0.3770.80 (version officielle) (64 bits) et enregistrement des données deux fois dans un problème de base de données

Je fais face à un problème étrange après google chrome update to Version 75.0.3770.80 (Official Build) (64-bit) hier.

J'utilise Laravel et si j'essaie de créer une tâche en utilisant Ajax, alors il ajoute deux fois à partir de Google Chrome uniquement mais si je crée la même tâche dans firefox ou dans un autre navigateur puis son bon fonctionnement avec une seule entrée. Ce problème, je suis confronté seulement après chrome mise à jour sinon il fonctionnait bien avant. Y a-t-il un changement dans cette nouvelle version qui peut affecter ma fonctionnalité?

J'ai essayé d'analyser le problème et j'ai trouvé la différence suivante qui est donnée dans les images ci-dessous pour chrome et firefox. globalTask demande montrant une demande annulée dans chrome mais je pense qu'il s'exécute correctement côté serveur et ajoute une entrée dans une base de données. Quelqu'un peut-il m'aider à résoudre le problème?

Chrome enter image description here

Firefox enter image description here

Codes

$.ajax({
    url: "/globalTask",
    type: "POST",
    headers: {
        'X-CSRF-Token': 'hgdhgsddshjfs214dsf4s56f',
    },
    async: false,
    data: data,
    success: function (response) {

    }
});
9
Rakesh Sojitra

Je pense que j'ai trouvé que cela est lié à preventDefault ... ressemble à moi Chrome 75 termine un formPost s'il est fait via JS si vous ne faites pas preventDefault () sur le événement original.

3
user984976

cochez si le bouton d'envoi a le type "soumettre" ou "bouton". Si votre ajax soumet le formulaire, le bouton html doit avoir le type "bouton", sinon les deux sont soumis. Je pense que cela a résolu le problème pour moi.

2
kkovacs

Je vois également ce problème (deux HTTP POST, dont l'un est "annulé") dans notre site sur n'importe quel formulaire soumis. Nous utilisons ASP.NET MVC 5 avec JQuery 1.11 et Bootstrap 3.0.3.

La mise à jour de JQuery vers la dernière version (3.4.1) a résolu notre problème . En regardant le Chrome Trace réseau dans Chrome 74 l'initiateur dirait "Autre", mais ensuite dans Chrome 75 un des demandes affichera "Autre" et la seconde aura une trace JScript qui est allée à la fonction de déclenchement de JQuery.

Initialement, cet extrait de code a été ajouté à notre page de connexion et il a résolu le problème. La trace réseau affiche une seule demande, mais c'était la trace de la pile JQuery en tant qu'initiateur et non "Autre". Je ne sais pas comment ce code a "résolu" le problème, donc je l'éviterais comme pansement.

// 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');
});

Il semble que Google enquête sur le problème: rapport de bogue Chrome

1
Kyle Walker

Vérifiez vos extensions Chrome. Dans mon cas, le problème a été résolu lorsque j'ai désactivé l'extension "Safe Torrent Scanner" fournie avec le nouveau Bit Torrent Web.

0
Andre Crocci