jQuery.Deferred异常:XXX不是函数TypeError:XXX不是函数

时间:2017-03-16 11:38:42

标签: javascript jquery

我正在链接回调,如下面的Javascript代码段所示:

function market_price_cb(chart, marketdata){
    if (!chart.isEmpty()){
        // ...
    }
    else {
        // build chart from scratch ...                 
    }

    // do something with the chart ...
}


function my_chart_cb(chart, market_price_cb){
    $.ajax({
        url: 'http://localhost:8000/123'
    }).then(function(data) {
        market_price_data = $.parseJSON(data);
        console.log(market_price_data);
        market_price_cb(chart, market_price_data);
    });
}


// Fetches chart JSON data from server and rebuilds chart object
function load_chart_from_server(symbol, data_freq, my_chart_cb)
{
    $.ajax({
        url: 'http://localhost:8000/699',
        success: function (data) {
            let chart_object = $.parseJSON(data)
            console.log(chart_object);
            my_chart = new Chart(chart_object);

            my_chart_cb(my_chart);
        },
        async: true                 
    });
}

当我在页面上运行代码时,出现以下错误:

  

未捕获的TypeError:market_price_cb不是函数

为什么我会收到此错误,我该如何解决?

2 个答案:

答案 0 :(得分:0)

您没有向sudo /etc/init.d/apache2 restart 调用提供第二个参数,因此my_chart_cb未定义。

答案 1 :(得分:0)

使用此关键字访问功能" market_price_cb"在my_chart_cb()中。它将解决问题。

这意味着:

function my_chart_cb(chart, market_price_cb){
    $.ajax({
        url: 'http://localhost:8000/123'
    }).then(function(data) {
        market_price_data = $.parseJSON(data);
        console.log(market_price_data);
        this.market_price_cb(chart, market_price_data);
    });
}