Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.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 具有此关键字的函数调用未定义_Javascript_Jquery - Fatal编程技术网

Javascript 具有此关键字的函数调用未定义

Javascript 具有此关键字的函数调用未定义,javascript,jquery,Javascript,Jquery,我通过这个指针调用本地(类)函数,但是得到了一个错误“uncaughttypeerror:undefined不是函数”。在线发生的问题 this.createTimeline()在装载时间表功能 我的JS(相关)是: this.createTimeline=函数(){ this.inside_timeline=[]; 对于(var d=新日期(在周内开始);d存储$(this)在post函数调用之外的引用,在done回调函数中使用它,这里this不引用您的对象 this.loadtimetabl

我通过
这个
指针调用本地(类)函数,但是得到了一个错误
“uncaughttypeerror:undefined不是函数”
。在线发生的问题
this.createTimeline()在<代码>装载时间表
功能

我的JS(相关)是:

this.createTimeline=函数(){
this.inside_timeline=[];
对于(var d=新日期(在周内开始);d存储
$(this)
在post函数调用之外的引用,在
done
回调函数中使用它,这里
this
不引用您的对象

this.loadtimetable = function(in_guide_id, in_week_start, in_week_end)
{  
    var self = this; //store reference of this
    $.post( "./j.php", {})
      .done(function( data ) {
        self.createtimetable(); //Here instead of this use your variable
    });
}
编辑 如果您愿意使用
$.ajax()
而不是
$.post()
,则可以使用该选项

此对象将成为所有Ajax相关回调的上下文。默认情况下,上下文是一个表示调用中使用的Ajax设置的对象(
$.ajaxSettings
与传递给
$.Ajax
的设置合并)。(…)

$(this)
的引用存储在post函数调用之外,并在
done
回调函数中使用它,此处
this
不引用您的对象

this.loadtimetable = function(in_guide_id, in_week_start, in_week_end)
{  
    var self = this; //store reference of this
    $.post( "./j.php", {})
      .done(function( data ) {
        self.createtimetable(); //Here instead of this use your variable
    });
}
编辑 如果您愿意使用
$.ajax()
而不是
$.post()
,则可以使用该选项

此对象将成为所有Ajax相关回调的上下文。默认情况下,上下文是一个表示调用中使用的Ajax设置的对象(
$.ajaxSettings
与传递给
$.Ajax
的设置合并)。(…)


您的代码在回调中执行,
this
不再指向您的对象。您应该使用闭包,将
this
别名为类似于
self
的内容,或者显式绑定它

this.createtimetable = function () {
    this.inside_timetable = [];
    for (var d = new Date(in_week_start); d <= new Date(in_week_end); d.setDate(d.getDate() + 1)) {
        console.log(new Date(d));
        daysOfYear.push(new Date(d));
    }
}
this.loadtimetable = function (in_guide_id, in_week_start, in_week_end) {
    this.guide_id = in_guide_id;
    this.week_start = in_week_start;
    this.week_end = in_week_end;
    $.post("./j.php", {
        guide_id: in_guide_id,
        week_start: in_week_start,
        week_end: in_week_end
    })
    .done(function (data) {
        var res_arr = jQuery.parseJSON(data);
        if (res_arr.code == 0) {
            this.excursions_base = res_arr.answer;
            alertify.success("Data extracted");
            this.createtimetable();
        } else {
            alertify.error("Some problem occured." + data);
        }
    }.bind(this)).fail(function () {
        alertify.alert("Error. Please, refresh page, or try later. We are sorry. Write or call us with your question!");
    }.bind(this));
}
this.createTimeline=函数(){
this.inside_timeline=[];

对于(var d=新日期(在周内开始);d您的代码在回调中执行,并且
不再指向您的对象。您应该使用闭包,将
别名为类似于
self
的内容,或者显式绑定此

this.createtimetable = function () {
    this.inside_timetable = [];
    for (var d = new Date(in_week_start); d <= new Date(in_week_end); d.setDate(d.getDate() + 1)) {
        console.log(new Date(d));
        daysOfYear.push(new Date(d));
    }
}
this.loadtimetable = function (in_guide_id, in_week_start, in_week_end) {
    this.guide_id = in_guide_id;
    this.week_start = in_week_start;
    this.week_end = in_week_end;
    $.post("./j.php", {
        guide_id: in_guide_id,
        week_start: in_week_start,
        week_end: in_week_end
    })
    .done(function (data) {
        var res_arr = jQuery.parseJSON(data);
        if (res_arr.code == 0) {
            this.excursions_base = res_arr.answer;
            alertify.success("Data extracted");
            this.createtimetable();
        } else {
            alertify.error("Some problem occured." + data);
        }
    }.bind(this)).fail(function () {
        alertify.alert("Error. Please, refresh page, or try later. We are sorry. Write or call us with your question!");
    }.bind(this));
}
this.createTimeline=函数(){
this.inside_timeline=[];

对于(var d=新日期(在周内开始);d
指向上下文,因此请注意调用函数的人和方式
指向上下文,因此请注意调用函数的人和方式