function ajaxTest(){ if (true) { $.ajaxSettings.async = false; var dataJson; $.getJSON("/universities", function(data) { dataJson = JSON.stringify(data); console.log("1>>>>>>>"); }); console.log("2>>>>>>>"); } console.log("3>>>>>>>"); var sum = 1+2; console.log("4>>>>>>>" + sum); } 不加红色部分执行顺序是2,3,4,1 加零红色部分执行顺序是1,2,3,4 1、预约成功病人于就诊日携带患者本人身份证和预约时所提供的社保卡(医保病人)或医联卡(自费病人)及收到的预约回复短信按时至挂号收费窗口挂号。首次来长海医院就诊患者须至门诊一楼大厅0-3号窗口登记个人信息并办理挂号手续。产科需以自费方式预约挂号。 2、预约成功后,因故不能按时就诊者,请提前通过网站或拨打95169办理退号手续。预约挂号爽约2次者,在180天内暂停预约长海医院挂号资格,但不影响在医院现场挂号。 $.getJSON异步请求和同步请求 先看一段代码: 复制代码 for(var j=0;j<24;j++){ (jQuery).getJSON(‘log_analyze.php‘,{r:Math.random(),logid:logid,op:2,j:j},function(data){ if(data.success_agent){ var width=j*10; $("#up_time_loading").empty().append("<div style=\"width:"+width+"px;height:10px;border:1px solid #333;background-color:#333\"></div>"); } }) } 复制代码 这段代码的意思是:请求log_analyze.php,每次请求成功后就把J加1,然后再去请求。 打开firebug,可以看到这24条数据是异步执行,所以我log_analyze.php获取到得数据很混乱,没有规律,怎么解决呢? 在执行之前加$.ajaxSettings.async = false; (同步执行) 复制代码 $.ajaxSettings.async = false; for(var j=0;j<24;j++){ (jQuery).getJSON(‘log_analyze.php‘,{r:Math.random(),logid:logid,op:2,j:j},function(data){ if(data.success_agent){ var width=j*10; $("#up_time_loading").empty().append("<div style=\"width:"+width+"px;height:10px;border:1px solid #333;background-color:#333\"></div>"); } }) } 复制代码 在for循环之前加一个$.ajaxSettings.async = false; 表示同步执行,这样他就会安装顺序执行了。 下面的是从网上摘过来的: 同时执行多个$.getJSON() 数据混乱的问题的解决 在执行之前加$.ajaxSettings.async = false; (同步执行) 执行你的代码之后及时恢复为$.ajaxSettings.async = true; (异步执行) 不然影响别的地方的需要异步执行的代码。 example: $.ajaxSettings.async = false; $.getJSON(url, data, function(data){ }); $.getJSON(url, data, function(data){ }); $.getJSON(url, data, function(data){ }); ...... $.ajaxSettings.async = true;
时间: 2024-10-12 04:51:12