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 没有值,这发生在您的函数已经返回 undefined 之后。

于 2013-03-12T11:49:57.350 回答