使用$.getJSON函数时,想往全局域传值发现传不过去

var tdeptna;
	var tpostna; 
	$.getJSON("../SyscodeServlet?mode=getcodeByno&&codeno=jxdw",null,function call(data){   
       	if(data.errmsg!=""){
       		alert(data.errmsg);
       		return;
       	}
       	var tdept=eval(data.result);
       	tdeptna=tdept;      	
       	$("#tdeptid").combobox('loadData', tdept);//直接加载数据
       	
     });
console.log(tdeptna)

无法将tdept的值传给tdeptna,在网上查了一下,发现ajax默认是异步执行的,也就是说$.getJSON还没有执行完的情况下,console.log已经打印了。
解决:在$.getJSON前面加上$.ajaxSetup({async:false});就好了

var tdeptna;
	var tpostna;
	$.ajaxSetup({async:false}); 
	$.getJSON("../SyscodeServlet?mode=getcodeByno&&codeno=jxdw",null,function call(data){   
       	if(data.errmsg!=""){
       		alert(data.errmsg);
       		return;
       	}
       	var tdept=eval(data.result);
       	
       
       	tdeptna=tdept;
       	
       	$("#tdeptid").combobox('loadData', tdept);//直接加载数据
       	
     });

标签: none

评论已关闭