jquery一个ajax方法结束后,再执行下一个ajax方法。

今天遇到一个问题,就是下拉框回显的时候,有时可以正确回显,有时却取不到数据,代码如下:

$.ajax({
				type:"get",
				url:"EED.jsp?type=selMajor",
				dataType:'json' ,
				async:true,
				success : function(result) {
				
				$("#EEDmajorId").val(result.majorId);
				$("#EEDmajorName").val(result.majorName);
				
				var count = $("#industryselect option").length;
				for (var i = 0; i < count; i++) {
					if ($("#industryselect").get(0).options[i].text == result.industryName) {
						$("#industryselect").get(0).options[i].selected = true;
						break;
					}
				};  
				                                            
				},                                              			
				error : function(){
					alert("网络连接异常...");
				}
			});

这里有时会取不到数据,前端报错,Cannot read property 'options' of null,于是我锁定了一行代码,

 这里count有时取值为0,我意识到行业下拉框可能加载的慢,导致这里取不到值,行业下拉框的代码:

function Industry(){
			
			var select = '';
			//alert(m);
			$.ajax({
				type: "get",
				//url:'department.json',
				url:'EED.jsp?type=getIndustryInfoByEdit',
				dataType : "json",
				async: false,			
				success: function (data) {	
					
					$.each(data,function(i,f){
						
						select += '<option value="'+data[i].industryid+'" id="'+i+'" checked="">'+data[i].industryname+'</option>';
					});
					 
					$("#industry").html('<select name="comboxname" id="industryselect" style="width:340px"><option value="" checked="">所有行业</option>'+select+'</select>');
					
				},
				error: function(XMLHttpRequest, textStatus, errorThrown) {
					//showErrorInfo("error");
					//alert("error");
				}	
			});
			
		}

页面初始化的时候先加载行业下拉框,在回显数据,所以这里就有先后顺序,在网上翻了一下,果然有办法,写法1

 //ajax操作
    myajax = $.ajax(
         {
         url: "",
         type: "post",
         success: function (data) {
         }
          });


    //myajax请求完毕时执行
        $.when(myajax).done(function () {
          //要执行的操作
        });
    }

写法2 

$.when($.ajax({
        url: "/home/GetProduct",
        dataType: "JSON",
        type: "GET",
        success: function (data) {
            alert(JSON.stringify(data));
        }
    })).done(function (data) {
        alert(data[0].Name);
    }).done(function (data) {
        alert(data[1].Name);
    }).fail(function () {
        alert("程序出现错误!");
    }).then(function (data) {
        alert("程序执行完成");
    });

自己修改的代码:

$(document).ready(function(){
			
			
			
			$.when(Industry(),Major()).done(function () {
		          //要执行的操作
				
		     });
				
		});

写完之后发现,还是有点问题,有把ajax改为同步,才最终解决了问题。

 写的不好,还望指正。。


 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值