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

あなたの2番目printTest().ajaxパラメータが行くところなので、そこに構文エラーがあります。最初の呼び出しが機能する理由は、それがsuccessコールバック内にあるためです。AJAX は非同期であるため、呼び出しが完了すると呼び出されます。

AJAX 呼び出しの後に呼び出しを配置するprintTest()と、非同期のため、AJAX 呼び出しが完了するまで待たずに、AJAX 呼び出しが開始された直後に呼び出されます。

于 2013-09-12T12:14:01.963 に答える
-1

ここで 2 番目の printTest() を呼び出すことはできません。

念のため、JSON を使用してデータを取得してみてください。はるかに簡単です。

于 2013-09-12T12:11:19.633 に答える