异步调用async:true

  调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们发现程序执行完后并没有获取到我们想要的值,这时很有可能是因为你用的是ajax的异步调用async:true(默认情况)。ajax的同步调用,只有在获取到了data值并赋值给result以后才会返回result完成该方法的调用。若设为async:true,则会未等到获取data值就已经返回了result。解决办法就是将你的代码直接写到success方法里(根据业务)。同步async:false需要等待返回结果才能继续,是在一条直线上的队列,异步async:true不必等待,且不在一个队列上,一般要监听异步的结果。开始var fwlx_list = "";是全局变量,当async:true异步请求时,该参数没有获取data的result,一开始并不知道原因,百度后,就这么将该参数写入success内,就得到success的result。

<script type="text/javascript">
var fwlx_list = $("#fwlx_list");
$(function(){
 $.ajax( {
  type : "POST",
  async : true,
  url :  "${pageContext.request.contextPath}/index/fwlx_list",
  success : function(data) {
   var fwlx_list_html = "";
   var json = eval("("+data+")");
   for (var prop in  json) {  
    fwlx_list_html += "<div class='bgsbcon' >";
    fwlx_list_html += "<ul>";
    fwlx_list_html += "<li style='width:90px; text-align:left;'><a href='#' style='font-size: 15px;' class='currgy'>"+prop+"</a></li>";
    for(var i in json[prop]){
      fwlx_list_html += "<li><a";
      fwlx_list_html += " href='${pageContext.request.contextPath}/index/pager_content?fwlx="+json[prop][i].wxFuwuxiaoleiName+"&px=${px}&area=${dist}'";
      fwlx_list_html += " name='chk_type'> ";
      if("${type}" == json[prop][i].wxFuwuxiaoleiName){
	fwlx_list_html += "<font color='red'>"+json[prop][i].wxFuwuxiaoleiName+"</font>";
      }else{
	fwlx_list_html += ""+json[prop][i].wxFuwuxiaoleiName+"";
      }
      fwlx_list_html += "</a></li>";
    }
    fwlx_list_html += "</ul>";
    fwlx_list_html += "</div>";
    fwlx_list_html += "<div style='clear: both;'></div>";
   }  
   fwlx_list.append(fwlx_list_html);
  }
 });
});
</script>

     

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
 </head>
 <body>
  <div class="product-wrap posone"  id="fwlx_list"></div>
 </body>
</html>

   

猜你喜欢

转载自1160514291.iteye.com/blog/2227106