返回undefined的Javascript函数类对象

时间:2017-02-19 11:47:35

标签: javascript jquery asynchronous callback undefined

嗨大家我有功能并且它返回了一个javascript类但是在运行时返回的值是未定义的。当我将返回值设置为某个全局变量时,它在Chrome开发者控制台上给出了正确的结果。为什么会这样?

enter image description here

var globalData;

$(document).ready(function(){

var request = postRequest("contact", dt, elem);

        globalData = request;

        console.log(request.status); //this gaves me undefined

});


function returnObj(status, message, projects) {
    this.status = status;
    this.message = message;
    this.projects = projects;
}



function postRequest(method, vars, elem) {

    var result = new returnObj();

    $.post('api.aspx',
        {
            method: "test"
        },
        function (data, status) {
            var resultObject = $.parseJSON(data);

            result.status = resultObject.status;
            result.message = resultObject.message;
            result.projects = resultObject.projects;


        });

    return result;

}

1 个答案:

答案 0 :(得分:2)

您的post ajax请求接受一个异常的callback函数作为第三个参数。

return result;完成之前将调用

callback语句,这就是您收到undefined的原因。

我建议您创建一个callback功能。

function postRequest(method, vars, elem,callback) {
                                        ^^^^^^^^
     var result = new returnObj();
     $.post('api.aspx',
      {
        method: "test"
      },
      function (data, status) {
          var resultObject = $.parseJSON(data);
          result.status = resultObject.status;
          result.message = resultObject.message;
          result.projects = resultObject.projects;
          callback(result);
     });
}

如何调用功能:

postRequest(method, vars, elem, function(result) { 
    console.log(result);
});