2010-02-08 55 views
2

考慮以下幾點:在匿名函數

包裝回調(作品)

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

通話功能直接(cookie設置但在頁面重新加載前似乎沒有更新)

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

對於我正在做的第一件作品,但第二件作品沒有。函數reloadPage(如下所示)在updateView.php更新cookie後重新載入頁面。出於某種原因,使用第二個版本的cookie在重新加載頁面之前未被設置。但如果我刷新頁面我自己,它「發現」cookie的新值。

在jQuery文檔中有關於此的東西嗎?我找不到任何東西。

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

我使用jQuery 1.4.1,PHP 5.2.5,阿帕奇2.2.11

回答

4

試試這個:

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

reloadPage()不是一個函數的名字,但reloadPage是: )

+0

它的工作原理!這是一個jQuery的東西,還是隻是Javascript?如果jQuery,有一些文檔顯示這個?在$ .post的文檔頁面上,沒有使用匿名函數的示例。 – Samuel

+1

@Samuel - 這是一般的JavaScript,甚至大多數語言。例如,在c#中:'MyClass.Event + = MyFunc'可以工作,但是'MyClass.Event + = MyFunc()'不會......因爲你不知道params的數量,函數名稱不帶參數或括號。 –

+0

@Samuel - 請記住,在JavaScript中,一切都是一個對象,功能也是如此。所以如果你說reloadPage引用了這個對象,如果你說你正在執行reloadPage()。下面是一個聲明函數的例子,比存儲在一個變量中,然後通過該變量執行:'function hello(){alert('hello'); }; var x = hello; X();' – SBUJOLD