2 votes

Comment lancer un appel ajax en arrière-plan après un certain temps ?

Je veux afficher un message d'alerte au bout d'un certain temps, du type "Voulez-vous continuer ? Si l'utilisateur dit oui, alors l'appel ajax doit être exécuté en arrière-plan, sinon il faut annuler l'appel ajax. Alors s'il vous plaît dites-moi comment je peux placer une condition de temps dans la réponse de l'appel ajax ?

0voto

Haresh Vidja Points 39

En termes techniques, cela s'appelle une demande d'interrogation longue Cela ressemble à ceci

function longPolling()
{
    $.ajax({
        //..... your ajax configurations like url, type, dataType...etc
        success: function(data){
            // your code  for handle success response
           setTimeout(function(){
                    longPolling();
                },5000) // call again after 5 seconds
        },
        error: function(xhr){
            //  your code  for handle error response
           setTimeout(function(){
                    longPolling();
                },5000) // call again after 5 seconds
        }
    };
});

longPolling();// call where ever you need

J'espère que cela vous aidera

0voto

Guru Bala Points 39

Utiliser la fonction setTimeout() en javascript ou jquery

0voto

Sooraj T R Points 36

Ce que j'ai compris de votre question est que l'appel ajax sera effectué avant que vous demandiez à l'utilisateur "si vous voulez continuer ou non", correct ?

Et je crois que vous voulez vous assurer que l'utilisateur veut attendre si l'appel ajax prend beaucoup de temps ?

si c'est le cas, il suffit de mettre un drapeau si l'utilisateur appuie sur "non" et d'abandonner l'appel ajax.

// Assign handlers immediately after making the request,
// and remember the jqXHR object for this request
var jqxhr = $.ajax( "example.php" )
  .done(function() {
    alert( "success" );
  })
  .fail(function() {
    alert( "error" );
  })
});

//when user pressed no call the below function if the ajax is not completed
jqxhr.abort()

-1voto

gotnull Points 4918
window.setTimeout(function () {

if (confirm('Do you want continue?')) {
    // Do some ajax?
} else {
    // Do nothing!
}

}, 5000);

-1voto

Iceman Points 4257
var time = 5000;
setTimeout(function() {
  if (confirm('Do you want continue?')) {
    var root = 'http://jsonplaceholder.typicode.com';

    $.ajax({
      url: root + '/posts/1',
      method: 'GET'
    }).then(function(data) {
      console.log(data);
    });
  } else {
    // Do nothing!
  }

}, time)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X