Как выполнить команду после вызова AJAX? - PullRequest
0 голосов
/ 15 января 2010

я написал этот скрипт

$.getJSON('<%=Url.Action("JsonSave","Controler")%>',
            { id: newRow.Id, personId: newRow.PesronId},
             function(data) {
                 $('#grid').trigger('reloadGrid'); //{0}
                 $('#grid').editRow(rowCount); //{1}
             })

что я должен сделать, чтобы {1} был выполнен точно после {0}

Ответы [ 3 ]

3 голосов
/ 15 января 2010

ОТВЕТ ОБНОВЛЕНО Я провел небольшое исследование, и, похоже, вы используете плагин jQuery Grid . Он имеет обратный вызов gridComplete, который должен делать то, что вам нужно. Объедините это с моим исходным ответом, чтобы использовать one, и у вас все будет готово:

Поскольку события вызываются по порядку, вы можете добавить свой метод в очередь событий следующим образом:

$.getJSON('<%=Url.Action("JsonSave","Controler")%>',
        { id: newRow.Id, personId: newRow.PesronId},
         function(data) {
            $('#grid').one('gridComplete', function(){ $('#grid').editRow(rowCount); });
            $('#grid').trigger('reloadGrid');
         })

Использование one вместо bind приводит к тому, что обратный вызов вашего события будет использоваться только один раз.

1 голос
/ 15 января 2010

Ответ Дуга верен, за исключением случая, когда будет использовано loadComplete

jQGrid документация для событий

0 голосов
/ 15 января 2010

Являются ли триггеры () и editRow () асинхронными вызовами? Если это так, возможно, вам не повезло, если вы делаете это таким образом, поскольку вы не знаете, когда они будут вызваны.

Если вам необходимо вызвать editRow () после завершения trigger (), вызовите EditRow () в конце самой функции trigger ().

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