我正在使用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;
提前致谢。
答案 0 :(得分:0)
您的第二个printTest()
是.ajax
参数的位置,因此存在语法错误。第一次调用的原因是因为它在success
回调中,并且因为AJAX是异步,所以在调用完成时会调用它。
如果你在AJAX调用之后调用printTest()
调用,它将在AJAX调用开始后立即调用,而不是等到它完成,因为异步。
答案 1 :(得分:-1)
您无法在此处拨打第二个printTest()。
为了记录,尝试使用JSON来检索数据,这样更容易。