Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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,我创建了一个小型JavaScript应用程序,该应用程序使用以下函数调用函数来检索JSON数据: var months = function getMonths(){ $.getJSON("app/data/Cars/12Months", function (some_data) { if (some_data == null) { return false; } var months_data = new Array(); var value

我创建了一个小型JavaScript应用程序,该应用程序使用以下函数调用函数来检索JSON数据:

var months = function getMonths(){

$.getJSON("app/data/Cars/12Months", function (some_data) {
    if (some_data == null) {
        return false;
    }

    var months_data = new Array();
    var value_data = new Array();

    $.each(some_data, function(index, value) {
        months_data.push(index);
        value_data.push(value);
   });

    return[months_data,value_data];
});
}

然后,我在同一个文件中创建了另一个函数,该函数在加载特定页面时执行某些操作。在此函数中,变量“months”被传递给变量“result”

$(document).on('pageshow', '#chartCar', function(){

$(document).ready(function() {


    var result = months;
    var date = result[0];
    var values = result[1];

//more code here...

});
}

问题是,基于调试器,getMonths()函数工作正常并生成预期的输出,但第二个函数中的“result”变量无法获得变量“months”传递给它的值。您知道如何解决此问题吗?

一定是语法错误

更换

});
}
});
});

});
}
});
});

问题是,
$.getJSON()
函数是异步的,所以数据加载的时间要晚于读取的时间。有两种解决方法:
1.将
$.getJSON
替换为
$.ajax
并设置
async:false

2.将代码放入
$。getJSON
回调:

var months = function getMonths(){

$.getJSON("app/data/Cars/12Months", function (some_data) {
    if (some_data == null) {
        return false;
    }

var months_data = new Array();
var value_data = new Array();

$.each(some_data, function(index, value) {
    months_data.push(index);
    value_data.push(value);


}); 

var date = months_data;
var values = value_data;
//more code here..
    })
    }
$.getJSON()
是围绕
$.ajax
的包装,默认情况下是异步的。但你把它当作一个同步电话

您可以使用
$.ajaxSetup()

或者将
$.ajax
async:false

$.ajax({
    type: 'GET',
    url: 'app/data/Cars/12Months',
    dataType: 'json',
    async: false,
    success: function(some_data) { 
        //your code goes here
    }
});

或者,如果可能的话,更改应用程序的行为,以便在回调函数中处理数据。

您能解释一下吗?