вызов функции после завершения предыдущей функции - PullRequest
0 голосов
/ 23 января 2011

Я пытаюсь добиться этого:

function doThis()
{
    firstFunction(function()
    {
        closeWindow();// close window only after firstFunction() completes
    });
}

, где doThis () вызывается с кнопки. FirstFunction () - это вызов AJAX, после завершения которого должна быть вызвана вторая не AJAX-функция alert (). Каким-то образом код не работает, как задумано. FirstFunction () работает и вызывается нормально. Но похоже, что window.close не вызывается.

Любой совет, ребята? Нет кодов JQuery, пожалуйста.

обновление


позвольте мне уточнить это немного. функция doThis () вызывается по ссылке для отправки.

<a href="#" name="sumbit" onClick='doThis()'><img src="img.png"/></a>

После нажатия этой ссылки необходимо отправить форму и закрыть эти всплывающие окна. firstFunction () отправляет эту форму с использованием XMLHttpRequest и работает нормально, когда я использую ее следующим образом:

<a href="#" name="sumbit" onClick='firstFunction()'><img src="img.png"/></a>

Используя doThis (), я сначала пытаюсь опубликовать форму, а затем только закрыть ее, но не смог.

обновление 2


как упоминал Делнан, оказывается, что firstFunction не вызывала функцию, которая была передана ему в качестве аргумента. сделал это изменилось, и теперь он работает хорошо:

function firstFunction(callback)
{
//do ajax stuff
callback(); //calls closeWindow()
}

спасибо, ребята!

Ответы [ 2 ]

0 голосов
/ 23 января 2011

Вы уверены, что ваш код AJAX работает правильно? Я имею в виду, откуда вы это знаете, поскольку функция обратного вызова не выполняется? Что касается самого вызова, вы можете передать только предупреждение без функции-оболочки (для firstFunction).

0 голосов
/ 23 января 2011

Объявите вашу функцию следующим образом:

function firstFunction(callback) {
     // setup XMLHttpRequest / IE equivalent
}

и в обработчике события readystatechange вызовите обратный вызов:

if(this.readyState == 4 && this.status == 200) {
     // other stuff
     callback();
}

Если вы уже делаете этотогда у вас, вероятно, есть ошибка где-то в firstFunction, и вы должны показать ее реализацию.

Или doThis никогда не вызывается.

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