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

ajax返回结果延时怎么处理

var url = "http://www.abc.com/cell/check.php?do=get_jingdian&id="+id+"&cache="+Math.random();
$.get(url,function(result){
jd_getinfo=result;
});
return new BMap.InfoWindow(jd_getinfo);


上面是我的异步请求代码,但是第一执行这个函数,没有返回任务东西,再点一次就有了。
我看了一下应该是ajax请求返回内容延时了
就是没有等到ajax传来值就直接return new BMap.InfoWindow(jd_getinfo);这个了

请问这个问题怎么解决,就是要等
$.get(url,function(result){
jd_getinfo=result;
});这个函数执行完以后再执行return new BMap.InfoWindow(jd_getinfo);如果我把返回值直接放到$.get(url,function(result){
jd_getinfo=result;
});里的话无法完成我要的功能
------解决方案--------------------
var url = "http://www.abc.com/cell/check.php?do=get_jingdian&id="+id+"&cache="+Math.random();      
//改同步的 ,要不就需要修改逻辑,将需要bmap.infowindow对象的函数放回调里面
/*    $.get(url,function(result){       
        jd_getinfo=result;       
//使用BMap.InfoWindow的代码放这里来
    }); */      
$.ajax({url:url,async:false,success:function(result){jd_getinfo=result;}});
    return new BMap.InfoWindow(jd_getinfo);

------解决方案--------------------
ajax 异步的,你放到外面肯定会延迟,放到里面就没问题
------解决方案--------------------
最好放到里面,用if判断一下,有就赋值,没有就用默认值。