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