Le code suivant envoie des données au serveur. Les données sont stockées dans le localStorage avant d'être envoyées au serveur. Cela est dû à mon exigence pour l'utilisateur d'être en mesure d'utiliser mon système sans connexion Internet.ajax fallback en l'absence de connexion Internet
Le problème est que lorsqu'il n'y a pas de connexion Internet, il est évident qu'il ne peut pas envoyer les données au serveur. Que dois-je faire dans cette situation?
$('#btnSync').on('click', function(e) {
var my_data = {};
var my_value = [];
for (var i = 0, len = localStorage.length; i < len; ++i) {
if((localStorage.key(i).includes('set'))){
var lsItems = JSON.parse(localStorage.getItem(localStorage.key(i)));
allItems[localStorage.key(i)] = lsItems;
}
}
$.ajax({
url: "action.php",
type: "POST",
data: {'action':'btnSync','allItems':allItems},
dataType: "json",
success: function(data) {
$.notify(
{
message: data.message
},
{
type: data.status,
placement: {
from: "top",
align: "left"
},
newest_on_top: true,
delay: 0
}
);
},
error: function(data){
$.notify(
{
message: 'Unexpected error occured, please kindly contact System Administrator'
},
{
type: 'danger',
placement: {
from: "top",
align: "left"
},
newest_on_top: true,
delay: 0
}
);
}
});
});
Votre rappel d'erreur sera appelé. Pourquoi ne pas conserver une file d'attente séparée pour les données qui n'ont pas pu être envoyées au serveur (dans le stockage local). Vérifiez périodiquement si vous êtes en ligne et relisez les appels ajax. – mode777
regardez 'window.addEventListener ('online', sendToServer) window.addEventListener ('offline', alertUser)' –
@ mode777 Je conserve les données dans localStorage pour éviter que les données manquantes lors de la soumission ajax échouent. Alors qu'au moins j'ai une copie des données dans le localStorage. Vérification périodique signifie utiliser javascript setInterval? On dirait que vous avez de l'expérience, pouvez-vous élaborer plus ou avec un échantillon peut-être? –