将javascript局部变量发送到全局数组
我需要将y变量值传递给全局数组。ajax可以完美地获取json对象数据。我尝试了很多方法。但是没有运气。plz帮助将javascript局部变量发送到全局数组,javascript,php,ajax,Javascript,Php,Ajax,我需要将y变量值传递给全局数组。ajax可以完美地获取json对象数据。我尝试了很多方法。但是没有运气。plz帮助 var data = [], totalPoints = 10; function getRandomData() { if (data.length > 0) { data = data.slice(1); } // Do a random walk while (data.length < totalPoints) { va
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);
}
}
var数据=[],
总分=10;
函数getRandomData(){
如果(data.length>0){
data=data.slice(1);
}
//散散步
while(data.length
您只需将
data.push(y);
在成功函数内部。如果那不起作用。ajax还有一个完整的函数,在ajax调用完成时执行。请尝试将代码从success复制到complete中。您的数据数组不大于零,因此,您的逻辑无法工作 替换: 如果(data.length>0) 与: 如果(data.length>=0)
空数组长度为零。有几种方法可以通过拉、调用或绑定来实现。也可以使用全局函数()。但是,让我先解释一下问题和函数解决方案 当您调用
$.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
}
...
});
这回答了你的问题吗?移动数据。推送(y);在您的成功处理程序中,如果我移动到成功处理程序浏览器没有响应,我将使用var data[]更新实时图形。然后我改变变量y;若变量y=50,则会更新图形中的50:(如果我移动到success handler browser时没有响应,我将使用var data[]更新live graph。然后我将var y更改为var y=50,它将更新图形中的50。:(由于您处于while循环中,请尝试在ajax调用更改中设置async:true,仍然相同。我正在尝试从数据库获取此图表的数据。)