2010-02-08 7 views
2

Considérez ce qui suit:

rappel wrap en fonction anonyme (travaux)

$('#updateView').change(function(e) { 
    $.post(URL + "actions/updateView.php", 
    { view: $(this).val() }, 
    function() {reloadPage();} 
); 
}); 

fonction d'appel directement (cookie est installé mais ne semble pas mettre à jour avant rechargement de la page)

$('#updateView').change(function(e) { 
    $.post(URL + "actions/updateView.php", 
    { view: $(this).val() }, 
    reloadPage() 
); 
}); 

pour ce que je fais les premières oeuvres, mais la seconde ne fonctionne pas. La fonction reloadPage (illustrée ci-dessous) recharge la page après la mise à jour d'un cookie par updateView.php. Pour une raison quelconque, en utilisant la deuxième version, le cookie n'est pas défini avant le rechargement de la page. mais si je rafraîchis la page moi-même, il "trouve" la nouvelle valeur pour le cookie.

Y at-il quelque chose dans les docs de jQuery à ce sujet? Je n'ai rien trouvé.

function reloadPage() {location.reload(true);} 

J'utilise jQuery 1.4.1, Php 5.2.5, Apache 2.2.11

Répondre

4

Essayez ceci:

$('#updateView').change(function(e) { 
    $.post(URL + "actions/updateView.php", 
    { view: $(this).val() }, 
    reloadPage 
); 
}); 

reloadPage() n'est pas un nom de fonction, mais reloadPage est:

+0

ça marche! Est-ce une chose jQuery ou est-ce juste Javascript? Si jQuery, y a-t-il des docs qui montrent cela? Sur la page doc pour $ .post, il n'a pas d'exemple sans utiliser de fonction anonyme. – Samuel

+1

@Samuel - C'est javascript en général, ou la plupart des langues même. Par exemple dans C#: 'MyClass.Event + = MyFunc' fonctionne, mais' MyClass.Event + = MyFunc() 'n'est pas ... puisque vous ne connaissez pas le nombre de params, les langues sont écrites pour prendre le nom de la fonction sans paramètres ou parenthèses. –

+0

@Samuel - Rappelez-vous que dans JavaScript tout est un objet et la fonction est donc. Donc, si vous dites reloadPage, vous référencez l'objet, si vous dites reloadPage(), vous êtes en train de l'exécuter. Voici un exemple où la fonction est déclarée, stockée dans une variable puis exécutée via cette variable: 'function hello() {alert ('hello'); } var x = salut; x(); ' – SBUJOLD