0

我正在使用 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.'|';
}

?>

提前致谢。

4

2 回答 2

0

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

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

于 2013-09-12T12:14:01.963 回答
-1

你不能在这里调用你的第二个 printTest() 。

为了记录,尝试使用 JSON 来检索您的数据,这要容易得多。

于 2013-09-12T12:11:19.633 回答