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 ?
Réponses
Trop de publicités?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
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()
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>