1

JSON データを取得する関数を呼び出す次の関数を使用して、小さな JavaScript アプリケーションを作成しました。

var months = function getMonths(){

$.getJSON("app/data/Cars/12Months", function (some_data) {
    if (some_data == null) {
        return false;
    }

    var months_data = new Array();
    var value_data = new Array();

    $.each(some_data, function(index, value) {
        months_data.push(index);
        value_data.push(value);
   });

    return[months_data,value_data];
});

}

次に、同じファイル内に、特定のページが読み込まれたときに何かを実行する別の関数を作成しました。この関数では、変数「months」が変数「result」に渡されます。

$(document).on('pageshow', '#chartCar', function(){

$(document).ready(function() {


    var result = months;
    var date = result[0];
    var values = result[1];

//more code here...

});
}

問題は、デバッガーに基づいて、getMonths() 関数が正常に動作し、期待される出力を生成することですが、2 番目の関数の「結果」変数が、変数「月」によって渡された値を取得できないことです。この問題を解決する方法を知っていますか?

4

3 に答える 3

2

問題は、$.getJSON()関数が非同期であるため、データが後で読み込まれてから読み取られることです。2 つの回避策があります。1. yourを withと settingに
置き換えます。 2. コードをコールバックに入れます。$.getJSON$.ajaxasync: false
$.getJSON

var months = function getMonths(){

$.getJSON("app/data/Cars/12Months", function (some_data) {
    if (some_data == null) {
        return false;
    }

var months_data = new Array();
var value_data = new Array();

$.each(some_data, function(index, value) {
    months_data.push(index);
    value_data.push(value);


}); 

var date = months_data;
var values = value_data;
//more code here..
    })
    }
于 2013-03-06T10:11:01.080 に答える