JQuery обратный вызов происходит слишком быстро? - PullRequest
1 голос
/ 17 ноября 2009

Я использую 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;
    }   

Вот LoadBooks (), если это имеет значение:

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

Пост работает и вызывается функция LoadBooks (). Однако обновленный список книг по-прежнему содержит удаленную книгу. Если я затем вручную вызываю функцию LoadBooks () (по ссылке на странице), книги перезагружаются без удаленной книги. Почему при первой перезагрузке Книги все еще отображается удаленная книга? Это происходит до того, как фактическое удаление Книги завершено?

(я получаю те же результаты с $ .post ("/ Books / Delete /" + id, LoadProperties ());)

Спасибо.

1 Ответ

11 голосов
/ 17 ноября 2009

callback: LoadBooks() должно быть просто callback: LoadBooks,.

Используя callback: LoadBooks(), вы устанавливаете обратный вызов для возвращаемого значения функции, а не самой функции.

Кроме того, я думаю, что это должно быть complete, а не callback.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...