Ajax函数中的全局变量

时间:2013-09-12 12:07:03

标签: php jquery ajax

我正在使用jQuery学习Ajax方法。我这里有一个简单的代码。它是通过jQuery Ajax方法从csv文件加载数据,并将其放入一个数组中以供进一步使用。但似乎数组在Ajax函数之外丢失了,即使我确实将数组放在全局中。

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="js/jquery/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
var db=[];
$(document).ready(function(){
    $.ajax({
        url: 'loaddata.php',
        success: function(data){
            var arr = data.split('|');          
            for(var i=0; i<arr.length; i++){
                var miniArr = arr[i].split(',');
                db.push(miniArr);
            }
            printTest();    //work here         
        }
    });
    printTest();    //not working and collapse here 
});

function printTest(){
    document.getElementById('test').innerHTML += db;
}

</script>
</head>
<body>
<div id="test" />
</body>
</html> `

我的php文件应该没问题,

<?php
$database = file('database');
foreach($database as $item){
    if ($item===end($database))
        echo $item;
    else
        echo $item.'|';
}

&GT;

提前致谢。

2 个答案:

答案 0 :(得分:0)

您的第二个printTest().ajax参数的位置,因此存在语法错误。第一次调用的原因是因为它在success回调中,并且因为AJAX是异步,所以在调用完成时会调用它。

如果你在AJAX调用之后调用printTest()调用,它将在AJAX调用开始后立即调用,而不是等到它完成,因为异步。

答案 1 :(得分:-1)

您无法在此处拨打第二个printTest()。

为了记录,尝试使用JSON来检索数据,这样更容易。