【问题标题】:Returning a value from a javascript function [duplicate]从javascript函数返回一个值[重复]
【发布时间】:2014-10-26 21:35:12
【问题描述】:

我正在使用下面的 sn-p 代码将一个 java 数组返回给另一个 javascript 函数。

    var getCredits = (function() {
    console.log('Getting credits');
    $.ajax({
        type : 'GET',
        url : rootURL+"/getCredits",
        dataType : "json", // data type of response
        success : function(data){
            var array = [];
            console.log('Credits data = '+data);
            for(var x in data){
                console.log('x = '+data[x]);
                array.push(data[x]);
            }
            console.log('credits array is '+array);
            return array;
        }
    });
});


var getDebits = (function() {
    var myArray = [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8];
    console.log('debits array is '+myArray);
    return myArray;
});

当我运行代码时 - 日志如下 -

“生成我的图表”myMain.js:110“获得积分”myMain.js:149 "借方数组为 3.9,4.2,5.7,8.5,11.9,15.2,17,16.6,14.2,10.3,6.6,4.8" myMain.js:169 "积分数据 = 10.7,20.5" myMain.js:156 "x = 10.7" myMain.js:158 "x = 20.5" myMain.js:158 "credits 数组是 10.7,20.5"

getDebits 功能本质上就是我想要的 getCredits 功能。 从日志中它看起来像我想要的 - 但我将它传递给另一个看起来像的函数 -

var generateMyGraph = (function() {
    console.log("generating my graph");
    $('#myLineGraph').highcharts({
        chart: {
            type: 'line'
        },
        title: {
            text: 'Finances per month'
        },
        subtitle: {
            text: 'Credit and Debit per month'
        },
        xAxis: {
            categories: ['Sep', 'Oct', 'Nov', 'Dec', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug','Sep','Oct']
        },
        yAxis: {
            title: {
                text: 'Euro (€)'
            }
        },
        plotOptions: {
            line: {
                dataLabels: {
                    enabled: true
                },
                enableMouseTracking: true
            }
        },
        series: [{
            name: 'Credit',
            data: getCredits()
        }, {
            name: 'Debit',
            data: getDebits()
        }]
    });
});

它不起作用,有什么想法吗?提前致谢!

【问题讨论】:

标签: java javascript jquery arrays highcharts


【解决方案1】:

由于 ajax 调用异步从服务器获取响应,因此您无法从 ajax 调用返回值,但您可以在响应到达时调用函数。

因此,与其尝试返回一个值:

return array;

调用需要此数据的函数并传递数据,因为此时您需要的数据可用:

generateMyGraph( array );

然后调整你的函数来接收和使用这些数据:

var generateMyGraph = (function( arrData ) {  //<=== local alias to 'array'
//....
    series: [{
        name: 'Credit',
        data: arrData   //<===== use data here
    }, {
//......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-01
    • 2019-11-05
    • 2011-04-18
    • 2011-04-19
    • 1970-01-01
    • 2014-06-13
    相关资源
    最近更新 更多