我有这个Ajax脚本:
if(ajax.readyState==4)
{
var respuesta=ajax.responseText;
document.getElementById('result').innerHTML=ajax.responseText;
$("#newaircraftdialog").dialog('close');
$(document).ready(function(){
refreshTable();
});
$("#loadingdialog").dialog('close');
}
函数refreshTable:
function refreshTable(){
$('#table').load('aircrafts_table.php');
}
我遇到的问题是,当前一个函数#loadingdialog
完全结束时,我希望refreshTable
关闭。现在它做的是运行该函数,然后关闭对话框,但该函数需要时间来刷新表。因此,当您关闭对话框时,函数没有时间更新表。
答案 0 :(得分:0)
一旦refreshTable()方法完成,您只需调用对话框close()方法。如果refreshTable()正在调用异步方法,那么你需要在该异步方法的回调处理程序中调用dialog的close方法
@Edit:将您的refreshtable()代码更改为
function refreshTable(){
$('#table').load('aircrafts_table.php', function(){
//put that code to close that dialog box here
});
}
答案 1 :(得分:0)
您可以向refreshTable
函数添加一个回调参数,然后在完成时将其传递给您希望运行的任何内容。例如:
function refreshTable(callback)
{
/* ... (refresh table code) */
if ('function' === typeof callback)
{
callback()
}
}
/* ... (AJAX request) */
refreshTable(function ()
{
$("#loadingdialog").dialog('close')
}
)
答案 2 :(得分:0)
这样它应该就像你想要的那样(见答案末尾的更新刷新表):
if(ajax.readyState==4) {
var respuesta=ajax.responseText;
document.getElementById('result').innerHTML=ajax.responseText;
$("#newaircraftdialog").dialog('close');
refreshTable(function(){$("#loadingdialog").dialog('close');});
}
但是我不知道你为什么要把jQuery与纯JS混合(因为它看起来像我)。
假设您的代码可以像这样更改:
$(document).ready(function() {
$.ajax({url:ajax_url,
method:'GET',
dataType:'html',
success:function(res){
document.getElementById('result').innerHTML=res;
$("#newaircraftdialog").dialog('close');
refreshTable(function(){$("#loadingdialog").dialog('close');});
});
});
请注意,文档完全加载后,$(document).ready(function() {})
仅被调用一次。 ajax完成后不再调用它。
function refreshTable(callback){
$('#table').load('aircrafts_table.php', callback);
}