Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 完成后继续_Jquery_Ajax - Fatal编程技术网

Jquery 完成后继续

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(){

我有一个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');
        }
函数刷新表:

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);

}