Arrété un sript sous AJAX

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Arrété un sript sous AJAX

par Aureusms » 15 oct. 2008, 13:36

Merci berze, je regarde cela.

par Berzemus » 15 oct. 2008, 10:26

xmlhttprequest a une méthode abort().
http://msdn.microsoft.com/en-us/library ... S.85).aspx

Vois ce que tu peux faire avec ça, je n'utilise ajax qu'a travers jquery, ou il suffit de désafecter l'objet retourné par une demande ajax (ce qui revient au même, en fait).

Cet hollandais semble avoir traité le souci:
http://www.quirksmode.org/blog/archives ... s_a_1.html

par Aureusms » 15 oct. 2008, 08:33

Boujou (comme on dit chez nous) et merci déjà de m'avoir répondu.

Ce que j'ai essaye de faire, pour ceux qui utilise firefox, est (à peu près) la même chose que le petit outil qui est en haut à droite : quand on tape du texte, il donne une aide syntaxique : les éléments déjà recherchés ou existants.
Dans mon cas, les utilisateurs se servent de cet outil pour avoir une aide à la recherche dans les références qu'il recherche (10 000 environ). Le problème est que ces références ont été entrées par de multiples utilisateurs. Aussi, il y a des espaces, des tirets, des slash qui se baladent (et même les trois). Ainsi, j'ai pensé faire (de mon niveau) un peu comme l'outil firefox pour les aider à taper la bonne touche et ainsi affiner leur recherche.

J'ai déjà créé un temps d'attente entre deux touches qui, si il est dépassé, lance la recherche. Cependant, si un de mes collaborateurs utilise que leurs deux index, il lance énormément de recherches, ce qui pénalise le serveur. Peut-on "killer" un process lancé ?

par AB » 15 oct. 2008, 04:41

Euh oui mais la recherche FF s'effectue dans la page elle même pas dans une bdd...

Si j'ai compris le fonctionnement que tu souhaites avoir (à moins de lancer des requêtes à chaque appui de touche ce qui serait très dommageable pour les performances de ton serveur) tu vas essayer de trouver le temps d'attente entre deux actions, le plus approprié pour envoyer ta requête.
Ben le pb c'est que l'optimisation dépend des gens et de leur humeur qui peut changer...

Tout ça pour éviter d'avoir à appuyer sur la touche "entrée", je crois pas que ce soit rentable, ni pour l'utilisateur ni pour le serveur :-k

par Berzemus » 14 oct. 2008, 22:14

Et en utilisant un setTimeout qui attends une bonne centaine de millisecondes avant de déclencher une fonction ?

Arrété un sript sous AJAX

par Aureusms » 14 oct. 2008, 21:06

Bonjour,

Tout d'abord j'ai pas encore créé de code car je n'ai aucune idée de comment faire...
J'ai créé un code de recherche dans une base de donnée ou les pressions de touches lance la recherche avec bêtement un onkeyup="lance_recherche(this.id)"; (un sorte d'aide à la recherche comme avec le module de recherche rapide de firefox)

Mon problème, car peut être que je m'y prends mal, quand la personne tape un mot rapidement par exemple "coucou", elle tape 6 touches et donc lance 6 fois la fonction. C'est assez rapide mais quand le mot s'allonge, là cela devient galère.
Une idée pour arrêter le script déjà lancé en cas de pression de touche.

Ce que j'ai tenté pour l'instant : une fonction qui calcule le temps de répétition de touche et que si le temps est inférieur à 500 ms (avec la fonction setimeout), la fonction n'est pas lancée. Cela arrange bien mes collègues féminines qui tape plus vite que moi...