Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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
如何检查javascript函数是否就绪/完成(jQuery)_Javascript_Jquery_Callback_Ready - Fatal编程技术网

如何检查javascript函数是否就绪/完成(jQuery)

如何检查javascript函数是否就绪/完成(jQuery),javascript,jquery,callback,ready,Javascript,Jquery,Callback,Ready,我正在开发一个学习计划器,它从数据库中获取数据(语言键、任务、活动等)。因为我需要一个JSON字符串,所以我用JSON\u encode对它进行编码,以便在JavaScript中使用它。 我有一个不同的函数(用于键、任务、活动等),它获取这些数据并将其写入数组 function get_tasks(start_date,end_date){ maxsubtasks=0; maxtasks=0; $.getJSON(json_data+"?t_startdate="+s

我正在开发一个学习计划器,它从数据库中获取数据(语言键、任务、活动等)。因为我需要一个JSON字符串,所以我用
JSON\u encode
对它进行编码,以便在JavaScript中使用它。 我有一个不同的函数(用于键、任务、活动等),它获取这些数据并将其写入数组

function get_tasks(start_date,end_date){

    maxsubtasks=0;
    maxtasks=0;

    $.getJSON(json_data+"?t_startdate="+start_date+"&t_enddate="+end_date, function(data) {  

        tasks=new Array();

        $.each(data.tasks, function(i,item){

            tasks[i]= new Object();
            tasks[i]["t_id"]=item.t_id;
            tasks[i]["t_title"]=item.t_title;
            tasks[i]["t_content"]=item.t_content;
            . . .

            if ( i > data.tasks.length) return false;    
            maxtasks = data.tasks.length;
            if(item.t_parent > 0){
                maxsubtasks++;
            }
        });         
    });
    return true;
}
一切正常。我需要一些帮助,因为我现在必须在
$(document.ready()
中调用此函数。我只想在函数
get_tasks()
完成后(数组中充满了数据)构建我的学习计划器。否则,我将得到错误

如何解决这个问题

以下是我在
$(document).ready()中的内容:


您应该能够在
$.getJSON
中指定回调,该回调将在请求完成后立即执行

编辑:
您已经在这样做了,但是为什么不在
$.getJSON

中调用回调函数末尾的第二个代码块呢?您应该能够在
$.getJSON
中指定回调,该回调在请求完成后立即执行

编辑:
您已经在这样做了,但是为什么不在
$中调用回调函数末尾的第二个代码块呢。getJSON

我通常是这样做的: 简单,看起来像初学者,但它可以工作:):D


var isBusy=true;
$(文档).ready(函数(){
//在这里做你的事
isBusy=false;
});
函数exampleajax(){
如果(isBusy)返回false;
isBusy=true;
$.ajax({
async:true,
键入:“POST”,
url:“???.asp”,
数据类型:“jsonp”,
数据:qs,
错误:函数(xhr、ajaxOptions、thrownError){
//log(xhr.responseText+“AJAX-error()”+xhr.statusText+“-”+thrownError);
},
beforeSend:function(){
//log(“AJAX-beforeSend()”;
},
完成:函数(){
//log(“AJAX-complete()”;
isBusy=false;
},
成功:函数(json){
//log(“json”);
}
});
}

希望这对您有所帮助

我通常是这样做的: 简单,看起来像初学者,但它可以工作:):D


var isBusy=true;
$(文档).ready(函数(){
//在这里做你的事
isBusy=false;
});
函数exampleajax(){
如果(isBusy)返回false;
isBusy=true;
$.ajax({
async:true,
键入:“POST”,
url:“???.asp”,
数据类型:“jsonp”,
数据:qs,
错误:函数(xhr、ajaxOptions、thrownError){
//log(xhr.responseText+“AJAX-error()”+xhr.statusText+“-”+thrownError);
},
beforeSend:function(){
//log(“AJAX-beforeSend()”;
},
完成:函数(){
//log(“AJAX-complete()”;
isBusy=false;
},
成功:函数(json){
//log(“json”);
}
});
}

希望这对您有所帮助

您可以向函数添加回调:

function get_tasks(start_date, end_date, callback) {
if (callback) callback();
然后在函数中填充数组后,调用回调函数:

function get_tasks(start_date, end_date, callback) {
if (callback) callback();
现在,您可以使用callback参数初始化learning planner:

get_tasks(first_day, last_day, function() {
    init_learnplanner();
});

您可以向函数添加回调:

function get_tasks(start_date, end_date, callback) {
if (callback) callback();
然后在函数中填充数组后,调用回调函数:

function get_tasks(start_date, end_date, callback) {
if (callback) callback();
现在,您可以使用callback参数初始化learning planner:

get_tasks(first_day, last_day, function() {
    init_learnplanner();
});

其他答案对我不起作用,因为我有5个函数将我的数据与
$.getJSON
一起使用,我需要收集所有信息才能启动
init\u learnplanner()


经过几个小时的搜索,我发现了jQuery函数,它对我来说非常有用。jQuery跟踪所有已触发的ajax调用,并在一个调用完成时触发任何分配的
.ajaxComplete()

其他答案对我不起作用,因为我有5个函数将数据与
$.getJSON
一起使用,我需要收集所有信息,甚至启动
init\u learnplanner()


经过几个小时的搜索,我发现了jQuery函数,它对我来说非常有用。jQuery跟踪所有已触发的ajax调用,并在调用完成时触发任何分配的
.ajaxComplete()

作为旁注:您应该使用
task[i]={t\u id:item.t\u id,t\u title:item.t\u title,…}
创建对象,或者它甚至足以完成
task[i]=item
。作为旁注:您应该使用
任务[i]={t\u id:item.t\u id,t\u title:item.t\u title,}
创建您的对象,或者它甚至足以执行
任务[i]=item