无法记录javascript全局数组

时间:2014-02-16 12:44:00

标签: javascript php jquery html ajax

我有一个全局array,我想console.log(array_name),但我得到了未定义的错误 以下是我的代码:

<script type="text/javascript">
var profit = [];
$(document).ready(function(e) {
    $.ajax({
      url : "/php/get-inflow.php",
      dataType: "json",
      type: "POST",
      success: function(data){
            for(var i =0; i<data.length; i++){
                if(data[i] == null){
                    profit[i] = 0; // logging profit[i] here gives me correct value

                }else{
                    profit[i] = parseInt(data[i]); // logging profit[i] here gives me correct value
                }   
            }
        }
    });
    console.log(profit);
           //some other functions.......
    });
</script>

当我查看控制台时,我得到输出为[ ],这意味着一个空白数组......

利润数组是否正确设置为全局(jquery的新功能) 如何全局访问此数组以及其他函数 谢谢!

2 个答案:

答案 0 :(得分:1)

AJAX是异步运行的。 &#39; profit&#39;在你的成功中有价值。关闭,但不是紧接着电话。

如果确实需要,您还可以同步运行AJAX调用(为async添加一个选项:false)。这将阻止您的页面做任何事情,直到交易完成。

答案 1 :(得分:0)

John Green所说的一个例子(标记John Green是正确的!) - 这对于评论来说太大了。

var profit =[];
function logresults(data) {  console.log(data); }

$(document).ready(function(e) {


    function _ajax(callback) {

        $.ajax({
          url : "/php/get-inflow.php",
          dataType: "json",
          type: "POST",
          success: function(data){
                for(var i =0; i<data.length; i++){
                    if(data[i] == null){
                        profit[i] = 0;

                    }else{
                        profit[i] = parseInt(data[i]); 
                    } 

                }
                callback(profit);  
            }
        });

    }

    /* run */
    _ajax(logresults);

 });