日期:2014-05-16  浏览次数:20306 次

JS变量作用域问题
var incontext = '';
  $.ajax({
  url:'index.php?act=load&parid='+classid+'&t='+Math.random(),
  dataType:'json',
  error:function(){
  alert('载入错误');
  },
  success:function(d){
   
  for(n=0;n<d.length;n++){
  switch(d[n].type){  
  case '1'://文字
  incontext += '<li><span>喜欢<strong>5</strong>评论<strong>4</strong></span><img src="images/s_text_icon.png" /><a href="index.php?act=post&parid='+classid+'">我的故事</a></li>';
   
  break;
  case '4'://图片  
  break;
  case '2'://音乐
  break;
  case '3'://视频  
  default://分类
  }
  }
  } 
  }); alert(incontext);
incontext的作用域咋全局,这样alert出来还是空的
如何给incontext定义。。。

------解决方案--------------------
因为ajax()方法默认是以异步方式进行请求的,也就是发出请求后,浏览器不会等待服务器返回数据就急需执行后续代码了(也就是后续的alert(incontext);语句)。如果你要弹出修改后的incontext变量值,就得指定ajax()方法以同步的方式进行处理,方法是设置async选项为false值:
JScript code
$.ajax({
  url:'index.php?act=load&parid='+classid+'&t='+Math.random(),
  dataType:'json',
  async: false,
  //...

------解决方案--------------------
alert放到回调函数里