首页 > 解决方案 > 如何将 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);
  }
}

标签: javascriptphpajax

解决方案


有几种方法可以通过拉取、调用或绑定来实现。或者您可以使用全局函数()。但是,让我先解释一下问题和功能解决方案。

当你调用$.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
        }
       ...
    });

推荐阅读