ajax是异步的请求,success里的函数会在请求成功后才会执行,也就是flag只会在请求完成后才会将data.total赋值给flag。而return flag是在确认要发起请求后就执行了。所以除非请求完成,否则就是null
不知道你的HdUtils是什么封装的,jqurey的加async: false参数,纯ajax就加asyn: false,这样试试
var searchReportByld = function(shipreportdocId){
var flag = null;
var builderShipReport = new HdEzuiQueryParamsBuilder();
if(shipreportdocld != ""){
builderShipReport.setAndClause("shipreportdocId", shipreportdocId, "=", "and");
}
HdUtils.ajax.post({
url: "../webresources/login/work/ShipReport/find",
data: buildershipReport.build(),
success: function(data){
flag=data.total;
},
async: false
});
return flag;
};