jquery ajax的async属性的理解
$(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属性的理解的更多相关文章
- $.ajax()方法详解 ajax之async属性 【原创】详细案例解剖——浅谈Redis缓存的常用5种方式(String,Hash,List,set,SetSorted )
$.ajax()方法详解 jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为Str ...
- jquery ajax中data属性详解
$.post.$.get是一些简单的方法,如果要处理复杂的逻辑,还是需要用到jQuery.ajax() 一.$.ajax的一般格式 $.ajax({ type: 'POST', url: url , ...
- ajax之async属性
Ajax请求中的async:false/true的作用 官方的解释是:http://api.jquery.com/jQuery.ajax/ async Boolean Default: true By ...
- Ajax的async属性
Ajax请求中的async:false/true的作用 官方的解释是:http://api.jquery.com/jQuery.ajax/ async Boolean Default: true By ...
- jQuery ajax 当async为false时解决同步操作失败的问题
jQuery的ajax,当async为false时,同步操作失败.解决方案,jqueryasync 最近做项目遇到jQuery的ajax,当async为false时,同步操作失败的问题,上网搜索下,得 ...
- jQuery-关于Ajax请求async属性的说明及总结
在jquery的ajax中如果希望实现同步或者异步,我们可以设置async(默认true,表示异步请求),下面举例说明两种请求方式的区别. 1.后台代码 public JsonResult GetDa ...
- jQuery.ajax向后台传递数组问题
今天重温了一个问题,jQuery.ajax向后台传递一个数组,而在后台接收不到该值 前台js方法部分代码如下: //创建一个测试数组 var boxIds = new Array(); boxIds. ...
- jquery ajax属性async(同步异步)示例
在jquery的ajax中如果我们希望实现同步或者异步我们可以直接设置async发生为真或假即可true false,下面举几个jquery ajax同步和异步实例 例1.jquery+ajax/&q ...
- JQuery中$.ajax()方法参数详解 及 async属性说明
url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 ...
随机推荐
- [工作积累] Android: Hide Navigation bar 隐藏导航条
https://developer.android.com/training/system-ui/navigation.html View decorView = getWindow().getDec ...
- HttpWatch 安装后在IE上打开
启动浏览器, 在空白地方左键, 显示出菜单栏 菜单栏中选择"查看">"浏览器栏">"HttpWatch"启动HttpWatch ...
- magic_quotes_runtime 与 magic_quotes_gpc
magic_quotes_runtime 与 magic_quotes_gpc 这两个函数都是管理是否对数据进行特殊符号转义,但是他们针对的处理对象不同: magic_quotes_gpc的设定值将会 ...
- ASP.NET状态管理详解,让你明明白白
开发WinFrom的程序员可能不会在意维护应用程序的状态,因为WinFrom本身就在客户端运行,可以直接在内存中维护其应用程序状态.但ASP.NET应用程序在服务器端运行,客户端使用无状态的http协 ...
- hadoop安装问题
1. 运行start-dfs.sh启动HDFS守护进程,start-yarn.sh面向YARN的资源器和节点管理器,资源管理器web地址是http://localhost:8080/.输入stop.d ...
- ECMAScript5下Array的方法
声明:ECMAScript不会兼容IE8及以下版本IE浏览器. 一.迭代方法 注:这些迭代方法不会影响数组的值. 每个方法都有两个参数: array.方法(执行函数体,当前作用域(比如this,这个可 ...
- Thread类详解
java.lang 类 Thread java.lang.Object java.lang.Thread 所有已实现的接口: Runnable public class Threadextends O ...
- android开发环境搭建(for 驱动开发人员)
前言 一.android驱动的开发流程 1: 写LINUX驱动 2: 写LINUX应用测试程序 3: 写JNI接口,用来包装第二步写的应用 (要用NDK来编译) 生成一个.SO文件,相当于CE下的DL ...
- 在Jmeter中使用自定义编写的Java测试代码
我们在做性能测试时,有时需要自己编写测试脚本,很多测试工具都支持自定义编写测试脚本,比如LoadRunner就有很多自定义脚本的协议,比如"C Vuser","Java ...
- 数据库操作(ADO)
QTP工具本身自带有数据查询和验证功能,但是使用的人会感觉这个功能使用起来比较麻烦,灵活性和复用性较低,于是我们选择了用脚本调用ADO组件实现数据库的操作,现总结下工作中用到的数据库操作,代码如下: ...