La prévention pour exécuter une fonction JavaScript plus d'une fois
Je suis à l'aide de JavaScript, jQuery et PHP. Comment puis-je limiter la fonction JavaScript à exécuter une fois?
Mon MainJQuery fichier Ajax. display.php exécuter pendant un certain temps:
....
$.ajax({
type:'POST',
url: 'display.php',
data:'id='+id ,
success: function(data){
$("#response").html(data);
//Here Get_list should be execute only once.
get_list('get');
//Display should execute as usual
display();
}//success
}); //Ajax
.......
get.Php fichier écrit une valeur de JavaScript:
<?php
print "<script language='javascript'>";
print " g_cost[g_cost.length]=new Array('STA-VES','East',4500);";
print " g_cost[g_cost.length]=new Array('STA-CRF','West',5400);";
print "</script>";
?>
Ma fonction JavaScript a la valeur suivante à partir de PHP:
function get_list('get'){
for(var i=0;i<g_cost.length;i++)
var temp = g_cost[i];
var Name = temp[0];
var direction = temp[1];
var cost = temp[2];
..
some code
...
}
function display(){
for(var i=0;i<g_cost.length;i++)
alert(g_cost.length);
var temp = g_cost[i];
alert(temp[0]);
alert(temp[1]);
alert(temp[2]);
}
Est-il possible de limiter à exécuter une fonction JavaScript dans l'Ajax de jQuery succès partie?
Double Possible de Exécuter une fonction javascript qu'une seule fois
OriginalL'auteur venkatachalam | 2009-01-11
Vous devez vous connecter pour publier un commentaire.
En jQuery, vous pouvez utiliser le
.one()
fonction de lier une méthode qui vous permettra d'exécuter qu'une seule fois. Par exemple,Voir jQuery une rubrique d'aide.
OriginalL'auteur redsquare
Vous pouvez remplacer la fonction avec une fonction vide - c'est essentiellement le même que René Saarsoo solution, mais il semble plus agréable:
De mieux à faire get_list = Function("); Empêche les fuites de mémoire.
OriginalL'auteur weirdan
Trois options:
Définir un indicateur booléen dans la portée globale, de définir après une exécution réussie, et le vérifier avant de lancer
Après une exécution réussie, désactiver le bouton (ou autre contrôle que vous utilisez pour appeler une méthode d')
Un peu moins préféré, mais vous pouvez également procéder à la validation côté serveur, c'est à dire l'appel à la méthode à chaque fois, mais de valider sur le côté serveur. Le côté positif est que cela permettra de s'assurer de la cohérence des données sur le serveur.
OriginalL'auteur Yuval Adam
De créer une fonction qui s'exécute qu'une seule fois:
C'est presque la même que d'utiliser une variable globale pour le suivi combien de fois la fonction exécutée, sauf qu'au lieu d'une variable globale, nous créons une variable, que seule la fonction interne peut voir. Après que vous l'utilisez get_list comme toute autre fonction.
Cela pourrait probablement être remaniée en quelque chose de plus général dans la fonction prototye, de sorte qu'il pourrait être utilisé comme ceci:
OriginalL'auteur Rene Saarsoo
Façon la plus rapide est d'ajouter une ligne supplémentaire à la réussite de la déclaration:
OriginalL'auteur
Essayez de désactiver l'Ajax de déclenchement (lien, bouton, etc.) après un appel réussi.
Exemple d'un déclencheur:
...
OriginalL'auteur andyk