调用一个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>
本文探讨了在使用jQuery的Ajax方法时,由于默认的异步设置(async:true)导致无法正确获取返回值的问题。同步调用(async:false)会在获取data后返回结果,而异步调用则不会等待,可能在结果返回前就已经执行后续代码。解决办法是将依赖Ajax返回值的代码放入success回调函数中。示例中,全局变量fwlx_list在async:true情况下未能获取到data,通过调整代码到success内解决了问题。
1665

被折叠的 条评论
为什么被折叠?



