2010-10-02 7 views
1

J'essaie de verrouiller une ligne dans une table DB lorsqu'un utilisateur modifie l'entrée. Il y a donc un champ dans la table lock que j'ai mis 1 au chargement de la page avec php. Puis j'ai essayé de déverrouiller l'entrée (mettez 0) quand la page est déchargée. C'est mon approche. Cela fonctionne bien dans IE mais pas dans Firefox, Chrome etc .... La fenêtre.onbeforeunload fonctionne dans tous les navigateurs, j'ai testé ça. Ils ne font tout simplement pas la demande MAIS si je mets une simple alerte après req.send(); cela fonctionne dans certains navigateurs mais pas safari ou chrome. J'ai donc essayé de mettre quelque chose d'autre juste après ça, donc il y a d'autres choses à faire après la requête mais ça ne marche pas.MooTools AJAX Demande de déchargement

test de fonctionnement

() {var req = nouvelle demande ({ url: 'inc/ajax/unlock_table.php unlock_table = regswimmer & unlock_id =', }); req.send(); alerte ('bla'); // Fonctionne seulement avec ça!?!?!? }

window.onbeforeun = test;

J'ai déjà essayé différentes façons de faire la demande mais rien ne semble fonctionner. Et la requête elle-même fonctionne, mais pas dans cette constellation.

TOUTE aide serait appréciée!

Merci

Répondre

4

la requête est asynchrone par défaut. Cela signifie qu'il va fourche et ne se soucie pas du complet, qui peut ou ne peut pas venir (avoir le temps de finir). En y plaçant l'alerte, vous vous assurez que la demande est complète.

essentiellement, vous pouvez être mieux essayer une de ces choses:

  1. ajouter async: false aux options d'objet de demande. Cela assurera l'achèvement de la demande avant de partir.
  2. utiliser une image à la place comme un pixel de suivi.
  3. passer à qui est un peu plus rapide car il ne contient pas les en-têtes supplémentaires et informations cookie, peuvent compléter mieux (revenir à cette si async est retardé trop)

vous pouvez faire l'image comme si (sera également _GET $)

new Element("img", { 
    src: "inc/ajax/unlock_table.php?unlock_table=regswimmer&unlock_id=" + someid + "&seed=" + $random(0, 100000), 
    styles: { 
     display: "none" 
    } 
}).inject(document.body); 

enfin, utilisez window.addEvent("beforeunload", test); ou vous pouvez gâcher Mootools de collecte des ordures internes

+0

merci beaucoup, j'ajouté async: faux et il fonctionne maintenant :-) – Roman

+0

oh et Je vous sed window.addEvent ('décharger'). – Roman

+0

ahhhh, beforeunload n'a pas fonctionné dans l'opéra donc .... – Roman