Инициировать Ajax-скрипт в окне - останавливается при закрытии окна - PullRequest
1 голос
/ 02 мая 2011

Мне нужно вызвать Ajax-скрипт для перезагрузки данных из дочернего окна. Затем мне нужно закрыть указанное дочернее окно. У меня были проблемы с остановкой Ajax-скрипта при закрытии окна, поэтому я попытался использовать это:

MakeParentRequest('get_job.php?tab=journals&id=<?php echo $cur_job->job_id; ?>', 'jobscontainer', 'yes', 'yes');
setTimeout("window.close()", "1000");

MakeParentRequest () загружает скрипт get_job.php в элемент с идентификатором jobscontainer. Этот код все еще сталкивается с той же проблемой, если 'get_job.php' загружается дольше, чем время ожидания. Предложения?

1 Ответ

0 голосов
/ 02 мая 2011

Лучший способ справиться с этим - определить функцию обратного вызова, которая вызывается после завершения Ajax-вызова.

Вот простой (jQuery-ориентированный) пример:

function ajaxComplete() {
    window.close();
}

function MakeParentRequest() {
    $.post('get_job.php', {tab: 'journals'}, function( data, txtStatus, jqXHR) {
        ajaxComplete();
    });
}

Тогда не имеет значения, сколько времени займет вызов ajax, вы не закроете окно, пока оно не будет сделано.Кроме того, он позволяет вам лучше обрабатывать случай, когда ваш ajax-вызов завершается неудачно, и вам нужно сделать что-то еще.

Вы можете даже передать обратный вызов в качестве аргумента MakeParentRequest()

function MakeParentRequest(callback) {
    $.post('get_job.php', {tab: 'journals'}, function( data, txtStatus, jqXHR) {
        if(typeof callback == 'function') {
            callback();
        }
    });
}

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