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和 ...
随机推荐
- PE文件结构深入详解
一.PE结构基础 看了很多PE结构类的东东,要不上来就是整体结构,要不就是一大堆ASM代码,看的我等菜鸟有点难受!所以自己写个帖·学习PE我们先来弄懂几个问题! 1:几个地址的概念 VA:虚拟地址,也 ...
- RT/Metro商店应用如何如何获取图片的宽高
RT/Metro商店应用如何如何获取图片的宽高 var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms ...
- json_encode charset
json_encode utf-8 mysql charset utf8
- C++中static的全部作用
要理解static,就必须要先理解另一个与之相对的关键字,很多人可能都还不知道有这个关键字,那就是auto,其实我们通常声明的不用static修饰的变量,都是auto的,因为它是默认的,就象short ...
- C#索引器及示例
public class IndexSeletor<T> where T:struct { private List<T> _listObj; public IndexSele ...
- HDU4945 2048(dp)
先是看错题意..然后知道题意之后写了发dp..无限TLE..实在是不知道怎么优化了,跑了遍数据是对的,就当作理论AC掉好了.. #pragma warning(disable:4996) #inclu ...
- iOS-OpenGLES 简单渲染
UIImage *showImage = [UIImage imageNamed:, , showImage.size.width, showImage.size.height); ) fo ...
- 思考 ”前端开发人员都在关注的 GitHub 资源“
点这里 原文: 资源 免费的计算机编程类中文书籍 免费编程书籍 计算机科学论文 codeparkshare Python初学者书籍.视频.资料.社区推荐 Python资料汇总 app应用推荐 码农周刊 ...
- POJ 3150 Cellular Automaton(矩阵乘法+二分)
题目链接 题意 : 给出n个数形成环形,一次转化就是将每一个数前后的d个数字的和对m取余,然后作为这个数,问进行k次转化后,数组变成什么. 思路 :下述来自here 首先来看一下Sample里的第一组 ...
- UVA 10892 LCM Cardinality 数学
A pair of numbers has a unique LCM but a single number can be the LCM of more than one possiblepairs ...