2010-07-19 3 views
1

J'ai 2 méthodes js qui font une publication AJAX sur le serveur et affichent les résultats en conséquence.Exécution incomplète des rappels sur jQuery POST

1) Supprimer - Supprimer sur le rappel « cache » l'élément supprimé et ne pas actualiser la page

function DeleteRule(ruleId) { 

    var deleteRuleAction = $('#delete-rule-action').val(); 

    $.post(deleteRuleAction, { ruleId: ruleId }, function(data) { 
     if (data.Status == 'Success') { 
     alert(data.Messages[0]); 
     $('#rule-details-' + ruleId).fadeOut(500); 
     $('#div-rule-button-' + ruleId).fadeOut(500); 
     activeRuleId = null; 
     } 
     else 
      alert(data.Messages[0]); 
    }, 'json'); 
} 

2) - Enregistrez sur le rappel a besoin de rafraîchir la page pour afficher l'élément nouvellement ajouté le long avec les éléments existants

function SaveRule() { 

    var ruleId = $('#rule-id').val(); 
    var saveOrUpdateRuleAction = $('#add-or-edit-rule-action').val(); 

    $.post(saveOrUpdateRuleAction, { ruleId: ruleId }, function(data) { 
     if (data.Status == 'Success') { 
      alert(data.Messages[0]); 
      location.reload(true); 
// This is supposed to reload the page after saving the element. 
// But the page gets reloaded without display the alert on the previous line. 
     } 
     else 
      alert(data.Messages[0]); 
    }, 'json'); 
} 

J'appelle cette fonction Enregistrer sous:

<button type="submit" onclick="javascript:Save()">

Problème: La fonction de rappel dans Enregistrer n'est pas appelée du tout et la page est actualisée automatiquement. Au cours de l'appel AJAX, l'objet à enregistrer est enregistré dans la base de données. Mais, le code à l'intérieur de la fonction de rappel n'est pas exécuté.

je suggère le hack pour le faire fonctionner

<button type="submit" onclick="javascript:Save(); return false;">

On m'a dit que 'return false;' arrête la rechargement automatique de la page. Cependant, cela n'a aucun sens puisque ma suppression, qui ne devrait pas être rechargée, n'a pas ce hack pour l'empêcher de recharger. Lors de l'utilisation de FireBug, Delete affichait un POST réussi et un retour de données JSON. Cependant Enregistrer (sans le hack) a montré un 'avorter'

+0

des excuses pour la faute de frappe: Save() est SaveRule() – Rahul

Répondre

2

pouvez-vous vérifier avec le bouton normal ... par changer son type = "bouton"?

+0

Résolu en changeant le type en "bouton". Merci :) – Rahul