2010-01-19 5 views
3

J'ai un calendrier construit en utilisant PHP, avec des événements à ce sujet. J'utilise jQuery UI pour activer le glisser-déposer pour déplacer les événements. La fonction .droppable() a une fonction de rappel qui met à jour la base de données avec les nouvelles informations. Mais le calendrier doit être actualisé pour pouvoir lire les nouvelles valeurs de base de données.Comment rafraîchir un calendrier de base de données PHP après avoir utilisé glisser et déposer jQuery?

Pouvez-vous forcer une actualisation de page avec jQuery? Ou y a-t-il une meilleure façon de faire cela?

Répondre

1

Peut-être que c'est ce que vous voulez?

$("div.myCalendarCell").droppable({ 
    addClasses: false, 
    accept: "div.myEvents", 
    activeClass: "active", 
    hoverClass: "hover", 
    drop: function(event,ui) { 
     var myFormData = $(this).find("form.myEventFormData").serialize(); 
     $(this).load("php/myEventManager.php",{"myFormData":myFormData},function(e){ 
      alert("updated"); 
     }); 
    } 
}); 
+0

Ceci est proche, même si je ne veux pas l'alerte. Je vais jouer un peu plus avec ces options droppable. Merci. – rhodesjason

+0

L'alerte est juste une façon de montrer à l'utilisateur que l'ajax est terminé. Il existe de nombreux moyens non-obstructionnistes pour alerter l'utilisateur lorsque quelque chose est fini. Je suggère de jeter un spinner ajax à l'intérieur de la cellule du calendrier juste avant l'appel ajax et une fois terminé, il sera remplacé par le contenu chargé. –

1

Vous pouvez effectuer un appel ajax à une fonction php qui reconstruit le calendrier après la mise à jour de la base de données.

.droppable(function(){ 

    $('#calendar').load('scriptname.php', {variable1: 'var1', etc...}); 

}); 
+0

en utilisant .load()? – rhodesjason

+0

Oui, et vous pouvez utiliser le rappel .load pour faire autre chose après le chargement du calendrier. – jay

0

location.reload (true) correspond à l'appel que vous recherchez.

$('.selector').droppable({ 
    drop: function(event, ui) { location.reload(true); } 
}); 
0

Si vous modifiez la base de données sans rafraîchir, cela signifie que vous faites une HTTPXmlRequest quelque part le long du chemin ... pourquoi ne pas savoir si vous pouvez avoir cette demande revenir les modifications et mettre à jour en -navigateur?

... parce que si vous vouliez actualiser une page, vous auriez dû utiliser une soumission <form>, non? Et puisque vous ne l'avez pas fait, je me sens comme si vous vouliez de l'Action Ajax Sweet Rich-UI, et à la racine des principes de Sweet Rich-UI Ajax Action est "pas de rafraîchissement".

+0

9 fois sur 10 c'est vrai, mais dans ce cas j'utilise jQuery pour conduire drag and drop, et puis je veux un rafraîchissement de la page à ce moment seulement, juste pour montrer les changements de la base de données que le glisser-déposer créé. C'est un peu rare, mais je savais qu'il y avait un moyen de le faire sans actualisation de la page, comme le montrent les autres réponses ici. Merci! (Je préfère Hot Rich UI Ajax Action, cependant.) – rhodesjason

Questions connexes