2017-04-05 5 views
0

Y at-il attribut annuler la demande après 2 minutes en forme Javascript soumettreComment annuler la requête http après 2 minutes dans le formulaire Javascript?

code Javascript

var document = $document[0]; 
var form = document.createElement('form'); 
form.setAttribute('method', 'POST'); 
form.setAttribute('action', '/service/'+url); 
var hiddenField = document.createElement('input'); 
hiddenField.setAttribute('type', 'hidden'); 
hiddenField.setAttribute('name', 'filterParam'); 
hiddenField.setAttribute('value',angular.toJson(input)); 
form.appendChild(hiddenField); 
document.body.appendChild(form); 
form.submit(); 

comme délai d'attente dans l'objet de configuration http.

$http({ 
     method : 'POST', 
     **timeout : 120000,** 

    }).success(function(data) { 

    }).error(function(data, status) { 

    }); 

Répondre

0

Une solution pour cette approche pourrait être supprimer l'attribut action de la forme et de déclencher l'appel ajax dans une méthode javascript, où vous pouvez gérer manuellement le délai d'attente.

quelque chose comme:

<form> 
.. 
<button ng-click="submit()" /> 
</form> 

$scope.submit = function(){ 

    var promise= $q.defer(); 
    $http.get('/actionUrl', {timeout: promise.promise}) 
    .then(function(resp){ 

    }) 

    promise.resolve(); //cancel the request. you can set a timeout here 

} 
+0

Je veux réaliser ceci dans le formulaire soumettre – Lakshman

+0

j'ai édité ma réponse :) – Karim

1

Vous pouvez utiliser window.stop (Dans IE, il est document.execCommand("Stop")) pour abandonner toute soumission de formulaire en attente. Le code serait:

var document = $document[0]; 
var form = document.createElement('form'); 
form.setAttribute('method', 'POST'); 
form.setAttribute('action', '/service/'+url); 
var hiddenField = document.createElement('input'); 
hiddenField.setAttribute('type', 'hidden'); 
hiddenField.setAttribute('name', 'filterParam'); 
hiddenField.setAttribute('value',angular.toJson(input)); 
form.appendChild(hiddenField); 
document.body.appendChild(form); 
form.submit(); 

setTimeout(function() { 
    try { 
     window.stop(); 
    } catch (exception) { 
     document.execCommand('Stop'); 
    } 
}, 120000); 

Selon le DOM interface de l'élément de forme, il n'y a pas d'attribut ou une méthode pour annuler la soumission du formulaire au niveau de l'élément de formulaire.

+0

Merci pour votre réponse, je vais essayer aujourd'hui – Lakshman

+0

@Lakshman est votre problème résolu? Si oui, peut-être que vous pouvez "accepter" cette réponse? – shaochuancs