2013-03-15 4 views
0

Je suis actuellement un site mobile axé sur qui prend en charge le téléchargement de fichiers et ce que je tente de faire est de sauver l'utilisateur beaucoup de temps d'inactivité lorsqu'ils téléchargent un fichier à un formulaire.Demande incomplète Ajax après Formulaire de soumission

Mon but est comme suit:

xhr = new XMLHttpRequest(); 

xhr.open("POST", "http://myServer/myEndpoint"); 
xhr.setRequestHeader("Cache-Control", "no-cache"); 
xhr.setRequestHeader('Content-Type', 'text'); 
xhr.setRequestHeader('foo', "bar"); 
xhr.send(myData); 

//PseudoCode 
if(xhr.DataIsSent) myForm.submit(); 

Comme vous pouvez le voir, je vise à empêcher l'utilisateur d'avoir à attendre une réponse ajax avant de soumettre le formulaire, idéalement, je voudrais que cela courir en arrière-plan indépendamment de ce que fait l'utilisateur.

Ma compréhension de ajax a été qu'une fois que la demande est envoyée, sauf si elle est annulée manuellement, il sera terminé, cependant, j'ai eu des cas où les données qui atteint le serveur est incomplet

suggestions sur la façon Je pourrais y parvenir de manière fiable serait grandement apprécié. Jusqu'à présent, il apparaît qu'une fois le formulaire soumis, la requête partiellement terminée est terminée.

Répondre

1

Comme je peux lire sur les pages de Mozilla Developer, XmlHttpResponses sont stateful, aussi bien.

Je vous recommande d'utiliser jQuery. 1. Créez une promesse pour votre demande ajax 2. utiliser lorsque() puis() avant que le formulaire soumettre 3. erreurs de capture

Avez-vous besoin exemple de code pour cela?

+0

ahh par ailleurs, au sein de votre Then vous pouvez déclarer à la fois le succès et le comportement de l'échec de votre XMLHttpRequest. – redflag237

+0

Y a-t-il une chance que vous fournissiez un lien vers cette page? Est-ce que cette méthode nous permet d'envoyer la demande, puis d'effectuer la soumission du formulaire avant que la réponse ne soit reçue? (Je ne ai pas besoin de gérer la réponse, je dois simplement d'envoyer la requête) –

+0

également oui, un exemple de code serait parfait merci beaucoup! –

Questions connexes