今天遇到一个问题,就是下拉框回显的时候,有时可以正确回显,有时却取不到数据,代码如下:
$.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改为同步,才最终解决了问题。
写的不好,还望指正。。
更多推荐
jquery一个ajax方法结束后,再执行下一个ajax方法。
发布评论