2010-09-06 8 views
1

Bienvenue,Comment envoyer des données via POST?

J'ai une question.

Sur mon site Web j'ai formulaire ce qui permet à l'utilisateur de soumettre des données via POST (ajax). Le problème est, lorsque le champ de soumission de l'utilisateur, ajax demande de démarrage ... si le serveur est libre, ou le réseau de l'utilisateur est rapide, tout fonctionne très bien. L'utilisateur peut envoyer des messages très rapidement, et tout fonctionne.

Mais si le serveur est surchargé ou si l'utilisateur a une connexion lente, lorsqu'il appuie sur envoyer, il doit attendre que la fonction termine son travail.

Je me demande, il est possible de créer une sorte de queque dans Jquery.

Par exemple, je vais obtenir

function send_message() 
{ 

//conditions 
if, not empty, les then xx words, etc 
//conditions 

//if conditions ok 
add_to_sedn_queque($somedata); 
//if conditions ok 

} 

Et qui doit être exécuté immédiatement.

add_to_sedn_queque() < - je viens de faire semblant, de montrer ce que je veux avoir.

Donc cette fonction devrait exécuter ma fonction avec l'envoi de messages. En forme formulaire plus anciennes à plus récentes demandes.

Je ne vous demande pas d'écrire pour moi, je l'ai déjà travaillé.

Juste comment créer cette file d'attente, peut être sur un exemple simple.

Cordialement

Répondre

1

J'utilise .queue() :) Comme ceci:

function add_to_send_queque(data) { 
    $(document).queue('ajaxQueue', function(n) { 
     $.ajax({ 
     url: "something", 
     type: "POST", 
     data: data, 
     complete: n 
    }); 
} 

Qu'est-ce que cela ne fait coller vos appels sur une file d'attente personnalisée sur document appelé ajaxQueue. Lorsque chaque requête se termine (ajouter une méthode success si nécessaire, cela n'affecte pas cela), elle appelle l'élément suivant dans la file d'attente, ou laisse la file ouverte pour que la suivante soit exécutée immédiatement (si celle qui vient juste de finir le dernier a fait la queue).

Assurez-vous d'utiliser complete ici et non success pour appeler n, il se déclenche peu importe s'il y avait une erreur ... sinon votre file d'attente se bloquera en attente.

Ou, si vous avez besoin de plus d'options/de contrôle, il y a des plugins qui font cela et un peu plus, the ajaxManager plugin est l'une des meilleures options ici.