2017-09-04 3 views
0

Une fois la page complètement chargée, je fais une requête ajax à une action.Yii2 demande d'abandon et requête SQL

En attendant la réponse de l'action (cela prend 2 ou 3 secondes), si l'utilisateur clique sur un autre lien, je veux annuler la requête précédente et arrêter le processus mysql en même temps.

Comment puis-je faire cela?

J'ai essayé de faire comme ce

var xhr = $.ajax({ 
/* 
params 
*/ 
}); 

//before unload page 
xhr.abort(); 

mais je pense qu'il ne sera pas tuer processus sql.

Répondre

0

Faire un ajax nommé. Voici ajx est nommé

var formData = {};//Your data for post 
var ajx = $.ajax({ 
    type: "POST",// Http verbs 
    url: "filename.php",// file to request 
    data: formData, 
    success: function(response){ 
     console.log("ajax completed"); 
     console.log(response); 
    } 
}); 

Demande d'arrêt ajax en cliquant sur le bouton

$("#button_id").click(function() { 
    ajx.abort(); 
}); 
+0

Il arrête une demande ajax, mais requête MySQL continue à exécuter. Requête Mysql ne pas abandonner sur ajx.abort() –

+0

pour arrêter votre processus mysql vous devez faire un autre ajax pour faire cette commande du côté serveur: https://stackoverflow.com/a/9938302/2815635 – C2486

+0

Bonne idée, mais je ne peux pas envoyer une autre demande, jusqu'à ce que la précédente soit terminée. –