Javascript嵌套函数中的变量值

时间:2013-03-12 11:46:42

标签: javascript

我有一个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
}

无论函数返回什么都未定义。我无法弄清楚这个问题。有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

ajax是异步的,因此,在您的代码中,您正在向服务器执行请求并同时返回days的值(具有未定义值的变量)。

变量days在调用成功回调之前没有值,这在您的函数已经返回undefined之后发生。