javascript - 如何将 JavaScript 局部变量发送到全局数组?
问题描述
我需要将 y 变量值传递给全局数组。Ajax 可以完美地获取 json 对象数据。
var data = [],
totalPoints = 10;
function getRandomData() {
if (data.length > 0) {
data = data.slice(1);
}
// Do a random walk
while (data.length < totalPoints) {
var y;
$.ajax({
url: 'phpHelperDoc/get_live_data.php',
type: 'POST',
data: {
authentication: "SN0000000004"
},
global: false,
async: false,
success: function(msgy) {
var day_data = JSON.parse(msgy);
y = day_data['value_1_live'];
//Need to send this y value to var data=[];
}
});
data.push(y);
}
}
解决方案
有几种方法可以通过拉取、调用或绑定来实现。或者您可以使用全局函数()。但是,让我先解释一下问题和功能解决方案。
当你调用$.ajax({...});
任何返回值时,它都停留在函数的范围内。为了克服这一点。在全局范围内创建一个函数以将新值推送到数组并从成功调用中调用该函数。
// build an array to populate
var data = [];
// create a function to push the value into array
function hoistArrayReturn(arg){
data.push(arg);
}
// call function when data is retrieved
$.ajax({
...
success: function(msgy) {
var day_data = JSON.parse(msgy);
hoistArrayReturn(day_data); // will make it available outside the $.ajax call
}
...
});
推荐阅读
- javascript - “Content-Range”响应标头对 JavaScript 不可见
- xaml - UWP XAML:如何获得具有相同列宽的自动调整大小的网格
- laravel - 使用服务器进行 Firebase 身份验证,“我的身份验证方法安全有效吗?”
- c# - 从内部类访问外部类字段
- ruby - 如何减少 Ruby 中的重复输出?
- gtk - 等待新窗口打开的 GNOME Shell 扩展
- virtualbox - MacOS Mojave 上的 Virtualbox 5.1.6 问题
- google-app-maker - 应用程序制造商 - 尝试检索我部门中所有用户的列表时出现问题
- python - python缩进,SyntaxError:无效语法
- javascript - 如果当前值大于 10,Javascript 循环添加到前一个值