Je suis à la recherche sur la console dans Firebug lorsque je clique sur une fonction qui effectue une demande de paiement ajax. Le problème est que un seul clic d'un bouton doit envoyer 1 demande ajax, mais je reçois 2 demandes d'être envoyés
Le code pour mes js ressemble à ceci: p>
$('#shade, #booking_box').fadeIn(function(){
// ajax function
}
5 Réponses :
Quelques choses pourraient se produire: p>
Le gestionnaire de clic a été contraigné deux fois. Changer Il y a une redirection survenant sur le côté serveur, ce qui l'apparaît comme s'il y a deux demandes AJAX effectuées. Cela signifierait Le gestionnaire de clic est déclenché deux fois. Pour déboguer cela, ajoutez un point d'arrêt à votre gestionnaire de clic via les outils de développement Firebug ou Webkit et le déboguer manuellement. Vous serez en mesure de traverser la "pile d'appels" et de découvrir si c'est le cas. P> LI>
ol> $ ('book_now'). Cliquez sur (Fonction () { code> à $ ('book_now'). Unbind ("Fonction () { code > Pour déboguer. Plus tard, vous pouvez refactoriser votre code pour utiliser $ ('. book_now'). Unbind ("cliquer sur", le gestionnaire) .Cliquez avec le gestionnaire; P> P> p> LI >
console.log ('inside') code> ne serait exécuté qu'une seule fois. P> li>
J'ai eu ma fonction à l'intérieur de 2 divs avec les JS suivants
$('#shade').fadeIn(function(){
$('#booking_box').fadeIn(function() {
// ajax function
});
});
Veuillez supprimer document.Ready code> de votre code. Utilisez une fonction simple:
Pourquoi upvote? Vous ne pouvez pas lier directement un événement sur un élément qui n'est pas chargé. Donc, le document devrait être nécessaire.
Peut-être que quelqu'un pourrait bénéficier de mon expérience.
C'est là que j'ai eu: P>
SELECT onchange="someFunction()"
Changer votre attribut de classe à ID et cela ne le fera plus. C'est comme ça se déplacée. P>
Peut-être que quelque chose ne va pas dans vos autres codes, mais cela devrait fonctionner très bien et ne serait qu'une seule demande. Démo
Toute chance que vous ayez un
.Book_now code> imbriqué à l'intérieur d'un autre?@Keenlearner: Postez une capture d'écran de ce que vous voyez ... et comme une vérification de la santé mentale, mettez un appel à console.log () dans votre gestionnaire de clic, et voyez si que i> montre deux fois.
OFF THUMIC: Je suis sûr que les noms ici sont juste un peu trompeurs, mais vous savez qu'une demande get b> ne doit jamais modifier les données sur le serveur? "Book_NOW" sonne comme une action qui provoquera un changement et devrait donc être un post.
Ceci est censé travailler. Problème 100% est dans le code pivoté.
Merci pour ça Tster, je vais courir avec la poste car je suis en train d'envoyer des données, ce qui est plus caché avec un post. @Patrick DW, il n'y a pas de NO .BOOD_NOW, il y a cependant d'autres Div, mais pas avec une classe de .Book_now @ shog9, j'ai fait une console.log à l'intérieur de la fonction de clic, qui a effectué 1 écho dans la console.log, Et j'ai ajouté une autre console.log à l'intérieur de la requête Ajax elle-même et que je me montres à nouveau.
@mark & @demo merci pour cela.
@Keenlearner, s'il vous plaît utiliser jsfiddle pour reproduire le problème. Si nous voyons toute la page, nous pouvons peut-être déterminer le problème.
Pouvez-vous publier les données de demande / réponse? Peut-être une capture d'écran de celui-ci? Quels sont les codes de réponse? Pourrait-il y avoir une redirection impliquée?
Comme je l'ai posté plus tôt, jsfiddle.net/9cdzw démontre que le code donné ne présente pas le problème décrit. . Je suppose que cela n'est pas considéré comme une "réponse" autour de ces parties, cependant.
@TML: Parce que cela ne répond à rien à moins que l'astucieux soit à plat couché i>. J'espère que Keenlearner est finalement capable de fournir des informations qui nous aident à déterminer la cause du problème; Jusque-là, il n'y a pas de réponse.
@Keenlearner: Je suis avec Patrick - pouvez-vous poster des détails sur les réponses? À ce stade, je pense qu'il y a quelque chose de très inhabituel sur ce que ce code PHP renvoie, mais je suis à perte de ce qui pourrait générer deux réponses pour une demande ...
@TML, juste hors de curiosité, est-il possible de tester ce que je faisais sur ce site? c'est-à-dire ajaxant un fichier php? Je pensais que cela ne pouvait être utilisé que pour des trucs statiques. Ou feriez-vous simplement référence à serveur.com/booking.php?
Pourquoi ne pas simplement demander à l'article de fournir un lien au code en action ...? De cette façon au lieu de dire que vous avez besoin de plus de code, vous pouvez l'obtenir ... une réponse qui aide l'utilisateur à déterminer ce qui est faux serait également considérée comme une réponse dans ces parties ...
Keenlearner - Je vois la réponse HTML que vous avez postée. Ce n'est pas ce que @ shog9 et je cherchais. Pourriez-vous publier les informations de demande / réponse XHR que vous voyez dans la console?
Peu importe. Je n'ai pas vu que vous aviez trouvé la solution. Toujours une bonne idée de poster autant que possible du code pertinent. : o)