jquery 异步调用方法中不能给全局变量赋值的原因及解决办法
2015-09-10 17:22
826 查看
在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们发现程序执行完后并没有获取到我们想要的值,这时很有可能是因为你用的是ajax的异步调用async:true(默认情况),如:
function ManageCommentText(text) {
var result = text;
$.ajax({
data: "get",
url: "GetComments.aspx",
data: "type=getText&commentText=" + text,
cache: false,
async: false,
success: function (data) {
result = data;
}
})
return result;
以上方法是ajax的同步调用,只有在获取到了data值并赋值给result以后才会返回result完成该方法的调用。若设为async:true,
则会未等到获取data值就已经返回了result。
另一个解决办法就是将你的代码直接写到success方法里。(根据你的业务并不是所有的都可以直接写到success里的)
function ManageCommentText(text) {
var result = text;
$.ajax({
data: "get",
url: "GetComments.aspx",
data: "type=getText&commentText=" + text,
cache: false,
async: false,
success: function (data) {
result = data;
}
})
return result;
以上方法是ajax的同步调用,只有在获取到了data值并赋值给result以后才会返回result完成该方法的调用。若设为async:true,
则会未等到获取data值就已经返回了result。
另一个解决办法就是将你的代码直接写到success方法里。(根据你的业务并不是所有的都可以直接写到success里的)
相关文章推荐
- JQUERY 选择
- jquery插件之拖拽改变元素大小
- jquery的showLoading遇到的奇葩问题--正在查询
- 【jQuery】点击缩略图查看大图-imgbox
- JQuery select与radio的取值与赋值
- jquery ui各种验证代码
- jquery学习(3)--高级选择器
- jquery.inputmask 3.x
- liferay jquery ajax跳转页面
- jQuery超精致图片轮播幻灯片特效代码分享
- JavaScript或jQuery模拟点击超链接和按钮
- Jquery动态生成表单
- jquery学习(2)--选择器
- JQuery的第一个句源码
- jquery学习(1)
- JQuery Slider 实现时间刻度滑动条,用以编辑项目/起始时间(手动输入可自动更新到滑动条)
- JQuery Ajax Json实录
- 分享20款移动开发中很有用的 jQuery 插件
- jquery canvas 用户点击记录
- jQuery Mobile发展新闻阅读器,适应iphone和android打电话