在窗口中启动Ajax脚本 - 在窗口关闭时停止

时间:2011-05-02 15:01:29

标签: php javascript ajax

我需要调用Ajax脚本来从子窗口重新加载数据。然后我需要关闭所说的子窗口。当窗口关闭时,我一直遇到Ajax脚本暂停的问题,所以我尝试使用它:

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

MakeParentRequest()在ID为'jobscontainer'的元素中加载脚本'get_job.php'。如果'get_job.php'加载的时间超过超时持续时间,则此代码仍会遇到相同的问题。建议?

1 个答案:

答案 0 :(得分:0)

更好的处理方法是定义一个在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);