$(function(){
queryTemplateSort();
//
fillAddTemplatePage();
function queryTemplateSort() {
$.ajax({
type: "post",
url: "http://localhost:8080/...",
data: {"pageNo": 1, "pageSize": 20},
dataType: "json",
success:function(data){
var sortArray = data.dataList;
for(var i = 0; i < sortArray.length; i++) {
var option = "<option value='"+ sortArray[i].id +"'>"+ sortArray[i].name +"</option>";
var $selectElement = $(".templateSelectDiv select");
$selectElement.append(option);
}
}
});
}
fillAddTemplatePage();
function fillAddTemplatePage() {
var varUrl = window.location.search;
if(varUrl === "") {
return;
}
var topicid = "" + parseToNum(varUrl);
var jsonObject = {"topicid": topicid};
var jsonStr = JSON.stringify(jsonObject);
$.ajax({
type: "post",
url: "http://localhost:8080/....",
data: {'params':jsonStr},
dataType: "json",
success: function(data){
fillData(data.obj);
}
});
}
/**填充页面数据*/
function fillData(data) {
document.getElementById("magazineTopicId").value = data.id;
$(".templateSelectDiv select option[value='" + data.categoryId + "']")[0].selected = true; //erro undefined
document.getElementById("title").value = data.varName;
document.getElementById("chooseMusic").value = data.music.name;
document.getElementById("musicLink").value = data.music.link;
fillPage(data);
}
.....
}
 //jsp
<div class="templateSelectDiv">
<select >
<option value="0">全部</option>
</select>
</div>

加载这个jsp的时候调用queryTemplateSort方法,其中用ajax请求到数据后把选项拼接到这个select框中,第24行如果请求的url没有带参数则不填充页面数据,如果带了参数就根据一个id去查询这个页面的数据,然后回写到页面,但是因为在调用queryTemplateSort方法,ajax请求没有设置async属性,默认为true,支持异步,就是执行queryTemplateSort方法的同时分出一个线程继续向下执行fillAddTemplatePage方法,而这个方法的选择器选中的元素是queryTemplateSort执行完毕后才添加上去的,所以当如果queryTemplateSort没执行完就执行fillAddTemplatePage,下面这个语句就会报undefined的错误。当设置async: false时(意思是不分出另外的线程,执行完该方法后才会继续执行其他代码),这个时候当再执行到fillAddTemplatePage时,queryTemplateSort已经执行成功,这时就不会报错。

$(".templateSelectDiv select option[value='" + data.categoryId + "']")[0].selected = true;
后来发现就算取消了异步请求这样选中下拉框的选项还是会出现undefined的错误,而下拉框已经加载完成,不得要领,后来无赖改成
$(".templateSelectDiv select").val(data.categoryId)来选中下拉框。

jquery ajax的async属性的理解的更多相关文章

  1. $.ajax()方法详解 ajax之async属性 【原创】详细案例解剖——浅谈Redis缓存的常用5种方式(String,Hash,List,set,SetSorted )

    $.ajax()方法详解   jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为Str ...

  2. jquery ajax中data属性详解

    $.post.$.get是一些简单的方法,如果要处理复杂的逻辑,还是需要用到jQuery.ajax() 一.$.ajax的一般格式 $.ajax({ type: 'POST', url: url , ...

  3. ajax之async属性

    Ajax请求中的async:false/true的作用 官方的解释是:http://api.jquery.com/jQuery.ajax/ async Boolean Default: true By ...

  4. Ajax的async属性

    Ajax请求中的async:false/true的作用 官方的解释是:http://api.jquery.com/jQuery.ajax/ async Boolean Default: true By ...

  5. jQuery ajax 当async为false时解决同步操作失败的问题

    jQuery的ajax,当async为false时,同步操作失败.解决方案,jqueryasync 最近做项目遇到jQuery的ajax,当async为false时,同步操作失败的问题,上网搜索下,得 ...

  6. jQuery-关于Ajax请求async属性的说明及总结

    在jquery的ajax中如果希望实现同步或者异步,我们可以设置async(默认true,表示异步请求),下面举例说明两种请求方式的区别. 1.后台代码 public JsonResult GetDa ...

  7. jQuery.ajax向后台传递数组问题

    今天重温了一个问题,jQuery.ajax向后台传递一个数组,而在后台接收不到该值 前台js方法部分代码如下: //创建一个测试数组 var boxIds = new Array(); boxIds. ...

  8. jquery ajax属性async(同步异步)示例

    在jquery的ajax中如果我们希望实现同步或者异步我们可以直接设置async发生为真或假即可true false,下面举几个jquery ajax同步和异步实例 例1.jquery+ajax/&q ...

  9. JQuery中$.ajax()方法参数详解 及 async属性说明

    url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 ...

随机推荐

  1. 户外物理渗透:终端机,客户端的web测试思路

    现在的客户端界面越做越好看了,很多用到了web技术,轻便.界面炫.更新快,但是这样web的缺点也就出来了,就是不稳定,容易受用户等因素影响. 因为很多客户端web是内嵌的,内部通信,所以很多对安全的考 ...

  2. int型整数的数值范围

    假设int型用两个字节表示对于有符号的整数,用补码表示的话,最高位是符号位,后面15位用来表示数据.1.正数,表示的范围为0000 0000 0000 0001-0111 1111 1111 1111 ...

  3. ASP.NET状态管理详解,让你明明白白

    开发WinFrom的程序员可能不会在意维护应用程序的状态,因为WinFrom本身就在客户端运行,可以直接在内存中维护其应用程序状态.但ASP.NET应用程序在服务器端运行,客户端使用无状态的http协 ...

  4. Effeckt.css项目:CSS交互动画应用集锦

    目前,网上有大量基于CSS转换的实验和示例,但它们都过于分散,而Effeckt.css的目标就是把所有基于CSS/jQuery动画的应用集中起来,例如:弹窗.按钮.导航.列表.页面切换等等. Effe ...

  5. ASP.NET 4.5新特性WebAPI从入门到精通

    在新出的MVC4中,增加了WebAPI,用于提供REST风格的WebService,新生成的WebAPI项目和典型的MVC项目一样,包含主要的Models.Views.Controllers等文件夹和 ...

  6. POJ 2151 Check the difficulty of problems (概率dp)

    题意:给出m.t.n,接着给出t行m列,表示第i个队伍解决第j题的概率. 现在让你求:每个队伍都至少解出1题,且解出题目最多的队伍至少要解出n道题的概率是多少? 思路:求补集. 即所有队伍都解出题目的 ...

  7. linux 安装python,pip,

    Linux下python升级步骤 http://www.cnblogs.com/lanxuezaipiao/archive/2012/10/21/2732864.html 在 https://www. ...

  8. Windows 7 常用快捷键 命令

    Win+E:  打开新的windows资源浏览器 Win+F:搜索文件或文件夹 Win+R:打开运行窗口 Win + D:显示桌面 Win + M:最小化所有窗口 Ctrl+Shift+N: 新建文件 ...

  9. C#--判断当前是否是移动设备和设备的型号

    --如果是移动设备是true var ismobile = System.Web.HttpContext.Current.Request.Browser.IsMobileDevice; --设备型号( ...

  10. WCF分布式开发步步为赢(6):WCF服务契约继承与分解设计

    上一节我们学习了WCF分布式开发步步为赢(5)服务契约与操作重载部分.今天我们来继续学习WCF服务契约继承和服务分解设计相关的知识点.WCF服务契约继承有何优势和缺点?实际项目里契约设计有什么原则和依 ...