在JavaScript中从变量传递数据
我创建了一个小型JavaScript应用程序,该应用程序使用以下函数调用函数来检索JSON数据:在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
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
}
});
或者,如果可能的话,更改应用程序的行为,以便在回调函数中处理数据。您能解释一下吗?