调用一个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>