2009-08-26 10 views
0

En fonction javascript je suis submitin une forme:
form.submit();,Annuler form.submit()

avec une énorme quantité de données.

Est-il possible d'annuler cette opération en cliquant sur le bouton d'arrêt du navigateur?

MISE À JOUR:

Peut-être que je n'ai pas fait moi-même clair que je suis submiting des fichiers volumineux.
avec uploadcontrol qui s'exécute en iframe.

Répondre

0

Ceci est un problème classique avec l'architecture client-serveur. Une fois que la requête HTTP a été faite, il n'y a pas d'arrêt. Vous aurez besoin d'un moyen de restaurer l'état après toutes les demandes pour garantir que tout est de retour tel qu'il était. Maintenant, vous pouvez le faire avec AJAX et utiliser la fonction abort. Ou, vous pouvez essayer window.stop() ou document.execCommand("Stop"), en fonction de votre navigateur. Mais ceux-ci ne résolvent pas le problème de la demande ayant déjà été envoyée.

3

Vous pouvez faire quelque chose comme Gmail: Undo Sending Mails (fonction de laboratoire).

Cela justifie le délai d'envoi du courrier de 5 secondes. Si, à ce moment-là, le serveur reçoit un appel AJAX undo, le courrier n'est pas envoyé.

Cela pourrait potentiellement augmenter votre complexité côté serveur, mais pas autant.

Dans le cas où les informations ne sont pas envoyées, vous pouvez utiliser this:

//IE 
document.execCommand('Stop'); 
//Firefox 
window.stop(); 

Donc, tout cela ressemblerait à quelque chose comme ça (pseudo-code):

stop_submit(current_id){ 
    try{ 
     document.execCommand('Stop'); 
    }catch(e){} 
    try{ 
     window.stop(); 
    }catch(e){} 

    AJAXCall("/myfolder/cancel_submit/", "id="+current_id, "post"); 
    return; 
}