Jquery 完成后继续
我有一个Ajax脚本:Jquery 完成后继续,jquery,ajax,Jquery,Ajax,我有一个Ajax脚本: if(ajax.readyState==4) { var respuesta=ajax.responseText; document.getElementById('result').innerHTML=ajax.responseText; $("#newaircraftdialog").dialog('close'); $(document).ready(function(){
if(ajax.readyState==4)
{
var respuesta=ajax.responseText;
document.getElementById('result').innerHTML=ajax.responseText;
$("#newaircraftdialog").dialog('close');
$(document).ready(function(){
refreshTable();
});
$("#loadingdialog").dialog('close');
}
函数刷新表:
function refreshTable(){
$('#table').load('aircrafts_table.php');
}
我遇到的问题是,我希望在上一个函数
刷新表
完全完成时关闭加载对话框
。现在它要做的是运行函数,然后关闭对话框,但函数需要时间刷新表。因此,当您关闭对话框时,函数没有时间更新表。只要在refreshTable()方法完成后调用dialog close()方法即可。如果refreshTable()正在调用异步方法,则需要在该异步方法的回调处理程序中调用dialog的close方法
@编辑:将refreshtable()代码更改为
function refreshTable(){
$('#table').load('aircrafts_table.php', function(){
//put that code to close that dialog box here
});
}
您可以将回调参数添加到
refreshttable
函数中,然后在函数完成时传递希望运行的任何参数。例如:
function refreshTable(callback)
{
/* ... (refresh table code) */
if ('function' === typeof callback)
{
callback()
}
}
/* ... (AJAX request) */
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);
}
为什么要使用
ajax.readyState
而不是成功回调?为什么要在ajax处理程序中使用document.ready()?可能需要一个。refreshTable函数中有什么?refreshTable是重新格式化文件中表的功能。为此,您需要提供有关refreshTable()的详细信息函数我把函数放在问题帖里了!您的控制台中有错误吗?例如,对话框中的某些内容可能不是未定义的方法?我不知道如何才能做到这一点,您可能希望修复那里的ajax.responseText
。@MichaelRushton是的。谢谢
function refreshTable(callback){
$('#table').load('aircrafts_table.php', callback);
}