jQuery回调发生得太快了?

时间:2009-11-17 15:57:24

标签: jquery asp.net-mvc ajax callback

我正在使用ASP.NET MVC C#

我有一个删除Book的jQuery调用,然后在回调中我调用了一个刷新Books列表的函数。

function rembook(id) {
        var agree=confirm("Deletion cannot be undone.  Continue?");
        if (agree)
        {
            jQuery.ajax({ url: "/Books/Delete/" + id, dataType: null, type: "POST", cache: true, callback: LoadBooks(), data: null });
            return false;
        }
        else
            return false;
    }   

这是LoadBooks(),如果重要的话:

function LoadBooks() {
        $(".BookList").hide();
        $(".BookList").load("/Books/Edit/<%= Model.AuthorID %>");
        $(".BookList").show('slow');
    }

调用post和LoadBooks()函数。但是,刷新的书籍列表仍包含已删除的书籍。如果我然后手动调用LoadBooks()函数(通过页面上的链接),则会在没有删除的书籍的情况下重新加载书籍。为什么第一本书重新加载仍显示已删除的书?它是否在实际删除本书之前发生?

(我使用$ .post获得了相同的结果(“/ Books / Delete /”+ id,LoadProperties());)

感谢。

1 个答案:

答案 0 :(得分:11)

callback: LoadBooks()应该只是callback: LoadBooks,

使用callback: LoadBooks()您将回调设置为函数的返回值,而不是函数本身。

此外,我认为它应该是complete而不是callback