déclencher une fonction javascript avant sur n'importe quel appel AJAX
Ici, j'ai une fonction qui doit être appelée avant tout appel AJAX présents dans l' .Un projet de réseau.
Actuellement, je dois appeler checkConnection
sur chaque clic de bouton qui va invoquer la méthode AJAX, si la connexion à internet est là, le produit de réels AJAX appel!
De toute façon, je veux éviter de cette façon et le checkConnection
fonction doit être appelée automatiquement avant tout appel AJAX sur le formulaire.
En bref, je veux faire de la fonction se comporte comme une event
qui sera déclenchée avant tout appel AJAX
D'ajouter l'échantillon, qui fait appel AJAX sur le bouton cliquez sur; bien sûr, après vérification de la disponibilité d'internet...
//check internet availability
function checkConnection() {
//stuff here to check internet then, set return value in the variable
return Retval;
}
//Ajax call
function SaveData() {
var YearData = {
"holiday_date": D.getElementById('txtYears').value
};
$.ajax({
type: "POST",
url: 'Service1.svc/SaveYears',
data: JSON.stringify(YearData),
contentType: "application/json; charset=utf-8",
dataType: "json",
processData: true,
success: function (data, status, jqXHR) {
//fill page data from DB
},
error: function (xhr) {
alert(xhr.responseText);
}
});
}
Et ci-dessous est courant d'appeler la fonction:
<form onsubmit="return Save();">
<input type="text" id="txtYears" /><br />
<input type="submit" id="btnSave" onclick="return checkConnection();" value="Save" />
<script>
function Save() {
if (confirm('Are you sure?')) {
SaveData();
}
else {
return false;
}
}
</script>
</form>
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas implicitement appeler une fonction sans la rédaction d'un appel encore une fois(!) en JavaScript.
Donc, c'est mieux de l'appeler, dans l'actuel
AJAX
et pour cela, vous pouvez utiliserbeforeSend
propriété de ajaxRequest comme suit, donc il n'y aura pas besoin d'appelercheckConnection()
séparément:Il réduit l'appel que vous avez fait
onsubmit()
deform
tag!Mise à JOUR:
pour enregistrer une fonction globale avant chaque requête AJAX utilisation:
Le meilleur moyen est d'utiliser un publier-pouvoir s'inscrire modèle à ajouter des fonctions supplémentaires à être appelé pré-déterminé de temps (que ce soit avant ou après l'ajax par exemple).
jQuery prend déjà en charge personnalisée de publier-subsrcibe
Pour cet exemple précis viens de le faire:
Espère que je comprends bien ce que tu veux dire.
Mise à JOUR:
dans le
if
vous pouvez faire une vérification supplémentaire si la fonction est appelée à partir de la forme ou un champ (par exemple ajouter un argument SaveData(element))Si vous utilisez la saveData dans le code html, cela:
"saveData(this)"
, peut-être que vous devriez poster votre code html ainsiif
est en AJAx au lieu de la fonction! si plusieurs appels AJAx, vous allez vous en remettre à chaque AJAX?if
vous pouvez faire une vérification supplémentaire si la fonction est appelée à partir de la forme ou un champ (par exemple ajouter un argumentSaveData(element)
)"Save(this)"
donc, si l'élément est défini et est le formulaire que vous savez où la fonction a été appelée à partir deVous pouvez utiliser:
Que c'est!!
utilisation
ajax
méthode