Je me demande quelle est la meilleure façon d'arrêter les soumissions dupliquées en utilisant jquery et ajax?Arrêter les soumissions Ajax en double?
Je viens avec 2 façons possibles, mais pas sûr que ce sont les seuls 2.
sur Ajax désactiver tous les boutons commencent à la demande est faite. 2 problèmes que je vois avec ceci cependant j'utilise la boîte de dialogue de modèle de jquery ainsi je ne sais pas comment il serait facile de désactiver ces bouton car je ne sais pas s'ils ont des identifiants. Deuxième je si la demande se bloque l'utilisateur n'a vraiment aucun moyen d'essayer à nouveau puisque tous les boutons sont désactivés. Je suis à la recherche de quelque chose appelé AjaxQueue en ce moment je n'ai aucune idée si c'est ce dont j'ai besoin ou comment cela fonctionne depuis le site où le plugin est apparemment en panne pour la maintenance.
http://docs.jquery.com/AjaxQueue
Modifier
Je pense que c'est un spin off de ce que je regardais.
http://www.protofunc.com/scripts/jquery/ajaxManager/
Le seul problème que je vois avec ce ajaxManager est que je pense que je dois changer tous mes $ .post, $ .get et .ajax $ ceux de leur type.
Mais que se passe-t-il si j'ai besoin d'un paramètre spécial de $ .ajax? Ou ce fait j'aime utiliser .post et .get.
Edit 2
Je pense qu'il peut prendre dans toutes les .ajax $ options. Je suis toujours en train de regarder ça. Cependant, ce dont je ne suis pas sûr maintenant, c'est si je peux utiliser le même constructeur pour toutes les demandes qui utiliseront les mêmes options.
First you have to construct/configure a new Ajaxmanager
//create an ajaxmanager named someAjaxProfileName
var someManagedAjax = $.manageAjax.create('someAjaxProfileName', {
queue: true,
cacheResponse: true
});
Ou dois-je faire ce qui précède à chaque fois?
L'utilisation de la propriété 'timeout' ne serait-elle pas plus facile? Ou ne fonctionne-t-il pas comme je le pense? :) –
@Vivin - Bon point. À moins qu'il y ait une autre logique que vous voulez utiliser dans 'setTimeout()' pour décider d'abandonner ou non, vous pouvez utiliser la propriété 'timeout'. La variable 'request' est un drapeau comme dans votre réponse, mais avec l'avantage supplémentaire de fournir la fonctionnalité' abort() 'si nécessaire. – user113716