看两段代码:
//填充推荐人信息
$('#recommenderCode').bind('blur' , function(){//焦点触发方法
if(idnoBlurFlag){
//填充推荐人信息
getRecommenderInfo();//利用ajax查值,成功之后进行赋值
//带出营销员职级信息
setRank();//查找getRecommenderInfo();已经赋值的值
}
});
function getRecommenderInfo() {
$.ajax({
url : "${ctx}personnel/agentInfo/findRecomByCode.do",
type : "post",
data : {
recommenderCode : recommenderCode
},
success : function(recommender) {
if (recommender != '') {
var obj = eval("(" + recommender + ")");
var rows = obj["recommender"];
for ( var i = 0; i < rows.length; i++) {
$('#reRankName').val(rows[i].rankName);//赋值
问题: setRank();中得到的值$('#reRankName').val()并不是rows[i].rankName,而是之前的老数据。
原因:ajax是默认异步请求的,当未ajax返回结果值时,setRank();也是会执行的,率先得到未赋值之前的值。
解决:在 $.ajax语句块中加入属性:async: false,使ajax变成同步请求,即有返回结果后才执行下方代码,结果就会正确了。