我创建了一个小型 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. 用 $.ajax
替换你的 $.getJSON
并设置 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..
})
}
关于javascript - 在 JavaScript 中从变量传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15244092/