在JavaScript中从变量传递数据
Passing data from variables in JavaScript
我创建了一个小型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()
$.ajaxSetup( { "async": false } );
$.getJSON(...)
$.ajaxSetup( { "async": true } );
或使用$.ajax
和async: false
$.ajax({
type: 'GET',
url: 'app/data/Cars/12Months',
dataType: 'json',
async: false,
success: function(some_data) {
//your code goes here
}
});
或者如果可能的话改变你的应用程序的行为,这样你就可以在回调函数中处理你的数据。
相关文章:
- 当JSON数据=变量时,需要执行循环
- 如何将数据/变量从file_controller.rb传递到application.js
- 当移动到“外部”版本时,“内部”成功 AJAX 中的“数据”变量应该更改为什么
- 从 ajax jQuery 中的数据变量中获取属性
- 将脚本属性(数据变量)传递到 head.js
- 2 个数据变量的 mrender 不起作用
- 如何在 ng-repeat 过滤器中传递 HoDjango views.py 上下文数据变量
- 以简单的方式将多个数据变量传递给 AJAX 函数
- 如何从每个带有类的元素中获取数据变量
- 根据数据变量的d3网络图的颜色链接
- 如何在不同的网站之间共享数据变量或本地存储?iframe?postMessage
- 将数据变量从PHP传递到jquery ui对话框
- 数据变量没有从Vue.js中的监视器上的计算属性更新
- 弹出窗口数据变量传递
- 如何使用jquery发布输入数据变量
- vue .js:如何在.vue模板文件中的vue方法中设置数据变量
- JSON jQuery数据变量
- 从onclick()提取数据变量
- 忽略下划线模板中未定义的数据/变量
- 如何使用php数据变量创建条形图