JavaScript之回调函数的返回值给全局变量赋值问题
jQuery 中,会遇到$.get(url,data,callback,type) 或 $.post(url,data,callback,type) 返回值给全局变量赋值的问题:
例如:
<script language="JavaScript">
var count=1;
$.post("<%=path%>/AdminCenter/SysFunction/GetOrderNo",
      { parentCode: pc },
function(data){
count = sult;
},
"json");
alert(count);
</script>
问题:想⽤JavaScript 取testController中GetIsExist的值,赋给test.aspx中的全局变量 count,可是返回的值只在$.getJSON中起作⽤count为8,在全局中显⽰时仍为1,请问该问题如何解决?
问题原因:Ajax是默认都是异步JavaScript&XML,浏览器解析页⾯时,JS只管执⾏当前代码,顺序执⾏。发送请求了,那是请求响应的事,它不管这些,只管继续执⾏在它⾯前的代码,所以不等Ajax响应返回,便会继续向下执⾏,这时你的全局 count 仍然是初始值(在这⾥为1),如果你在回调函数function(data){}内部alert的话,就会是8了。
⽅法⼀:直接在回调函数中实现操作
<script language="JavaScript">
var count=1;
$.post("<%=path%>/AdminCenter/SysFunction/GetOrderNo",
      { parentCode: pc },
function(data){
count = sult;
alert(count);
javascript全局数组
},
"json");
</script>
⽅法⼆:在回调函数外实现,把异步改为同步 async: false
<script language="JavaScript">
var count=1;     
  $.ajax({
url:"<%=path%>/AdminCenter/SysFunction/GetOrderNo",
async:false,//改为同步⽅式
type:"POST",
data:{ parentCode: pc },
success:function(data){
count = sult;
},
dataType:"json"
});
alert(count);
</script>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。