我需要调用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'加载的时间超过超时持续时间,则此代码仍会遇到相同的问题。建议?
答案 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);