jQuery回调发生得太快了?

joh*_*kes 1 ajax asp.net-mvc jquery callback

我正在使用ASP.NET MVC C#

我有一个jQuery调用删除一本书,然后在回调中我调用一个刷新书籍列表的函数.

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;
    }   
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

谢谢.

Gre*_*reg 11

callback: LoadBooks()应该是公正的callback: LoadBooks,.

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

另外,我认为应该complete不是callback.