0

以下は私のコードです:

<script src="jquery-1.8.3.js" type="text/javascript">
</script>

<script type="text/javascript">

var obj=[]  ;
    function getData(){
        $.ajax({
            url:'jqueryJsonTest.php',
            type:'POST',
            dataType: 'json',
            cache: true,
            success:function(data){
            obj = data ; 
            alert ("alert 1: "+obj.length);
            }
        });
        }

$(document).ready(function() {
    getData();
    alert("alert 2: "+obj.length);
    alert("alert 3: "+obj.length);
});

</script>

データを保存した後の最初の結果が空の配列であるのはなぜですか?

4

1 に答える 1

0

すぐに戻る非同期AJAX呼び出しを行っています。コールバックが実行される前に戻りますsuccess(ここで、何が返されるかを設定objしています)。あなたがすべきことは、successハンドラーでさらに処理を行うことです-または-オプションを使用してajax呼び出しを同期させasync: falseます(非推奨)

コールバックハンドラーを関数に渡してみてくださいgetData()。つまり、次のようなものです。

function getData(mycallback){
    $.ajax({
        url:'jqueryJsonTest.php',
        type:'POST',
        dataType: 'json',
        cache: true,
        success:function(data){
            mycallback(data);
        }
    });
}

$(document).ready(function() {
    getData(function(obj) {
        alert("alert 2: "+obj.length);
        alert("alert 3: "+obj.length);
    });
});
于 2013-01-05T16:24:18.770 に答える