0

特定の月の投稿のタイトルのリストを取得するために呼び出されるJS関数があります。データはJSONオブジェクトとして返されます。呼び出し元の関数にデータを返したいのですが。応答の形式は次のとおりです。

{
  "success":true,
  "days":[
     {
        "date":"2,March 2013",
        "posts":[
           {
              "post_id":"10",
              "post_title":"tgfkyhhj",
              "created_on":"2013-03-02 21:24:17",
              "time":"09:24 PM"
           }
        ]
     } 
  ] 
}

このJSONの日数部分を返したいと思います。

機能は次のとおりです。

function archivePostMonth(month) {
    var days; 
    $.ajax({
        'type' : 'get',
        'url' : base_url + 'index.php/blog/blogArchiveMonth',
        'data' : {
            'blogId' : blogId,
            'month' : month,
        },
        success : function(response) {
            var res = jQuery.parseJSON(response);
            if (res.success == true) {
                console.log(res.days); //displays the data
                days = res.days;
                console.log(days); // displays the data
            }
        }
    });
    console.log(days); //undefined
    return days; // returns undefined
}

関数が未定義を返すかどうかは関係ありません。私は問題を理解することができません。これを行うためのより良い方法はありますか?

4

1 に答える 1

1

ajax は非同期であるため、コードではサーバーへのリクエストを実行し、同時に days の値 (未定義の値を持つ変数) を返します。

関数がすでに未定義を返した後に発生する成功コールバックが呼び出されるまで、変数 days には値がありません。

于 2013-03-12T11:49:57.350 に答える