分享一个jquery ajax 中不能修改全局变量问题的方法
来源:互联网 发布:连杆机构设计软件 编辑:程序博客网 时间:2024/05/29 08:16
今天在做一个项目的时候,由于以前没有出现过这情况,导致弄了多久才知道是这问题。
出现问题的代码
var unc = 0;$.get( 'index.php', 'data=1', function(res) { unc=1; });alert(nuc);
这样的话,不管ajax成功返回与否,全局变量unc都不会变
为什么会出现这情况呢?
答案是:ajax是进行的异步操作
解决办法:
async:false
$.ajax({ type:'get', url:'index.php?act=check_email&email=' + $('#email_reg').val(), async:false, success:function(response){ if (response.error==0) {unc = 1; } }, dataType:'json' });
以上方法是ajax的同步调用,只有在获取到了data值并赋值给result以后才会返回result完成该方法的调用。若设为async:true,
则会未等到获取data值就已经返回了result。
本文由 翌航 于2012年12月18日发表在 jquery/js 分类下, 你可以发表评论,并在保留原文地址(http://www.linzl.com/archives/324.html)及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 分享一个jquery $.get ajax 中不能修改全局变量问题的方法 | Linzl技术汇
自己的上一篇文章asp.net JQuery Ajax WebService Gridview 任意 双击 某一列 编辑修改
jquery方法就可以修改成
<script type="text/javascript"> $(function () { var content; var resultajax =0;//加一个全局变量 var indexId = $("#GridView1 td:eq(1)").text(); var trcol; var arr = ['表头1', 'ID', '列1', '列2', '列3', '列4', '列5']; $("#GridView1 td:not(:lt(2))").dblclick(function () { var clickObj = $(this); trcol = arr[$(this).parent().find("td").index($(this)[0])]; content = clickObj.html().replace(" ", ""); changeToEdit(clickObj); }); function changeToEdit(node) { node.html(""); var inputObj = $("<input type='text'/>"); // inputObj.css("border", "0").css("background-color", node.css("background-color")) //.css("font-size", node.css("font-size")).css("height", "20px") //.css("width", node.css("width")).val(content).appendTo(node) //.get(0).select(); inputObj.css("border", "0").css("background-color", '#d5d5d5').css("font-size", node.css("font-size")).css("height", "20px").css("width", node.css("width")).val(content).appendTo(node).get(0).select(); inputObj.click(function () { return false; }).keyup(function (event) { // var keyvalue = event.which; // if (keyvalue == 13) { // //node.html(node.children("input").val()); // if (node.children("input").val() != content) { // if (confirm("是否保存修改的内容?", "Yes", "No")) { // node.html(node.children("input").val()); // } else { // node.html(content); // } // } else { // node.html(content); // } // } // if (keyvalue == 27) { // node.html(content); // } }).blur(function () { if ((node.children("input").val() != content) && (node.children("input").val() != " ")) { if (confirm("是否保存修改的内容?", "Yes", "No")) { updateitem(trcol, node.children("input").val(), indexId); //alert(trcol); if (resultajax > 0) { node.html(node.children("input").val()); alert("保存修改成功!"); } else { alert("保存修改失败!"); } } else { node.html(content); } } else { node.html(content); } }); } function updateitem(col, val, id) { $.ajax({ type: "POST", async: false,//加这个ajax就可以修改全局变量了 url: '<%=ResolveUrl("../WebService/GetAuto.asmx/UpdateA") %>', data: "{ 'col': '" + col + "','val': '" + val + "','id': '" + id + "'}", // 发送信息至服务器时内容编码类型 contentType: "application/json; charset=utf-8", dataType: "json", success: function (msdata) { // AJAX响应被包装到一个d对象里,如{"d":true}, // 因此需要用到msdata.d来获取请求返回的布尔值 if (msdata.d) { //alert("保存修改成功!"); resultajax = 1; } else { //alert("保存修改失败!"); } }, error: function (xhr, textStatus, errorThrown) { alert("AJAX错误:" + errorThrown); } }); } }); </script>
0 0
- 分享一个jquery ajax 中不能修改全局变量问题的方法
- jquery ajax 异步调用方法中不能给全局变量赋值的原因及解决办法
- jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
- jquery ajax修改全局变量
- jquery 异步调用方法中不能给全局变量赋值的原因及解决办法
- Jquery 使用全局变量ajax请求返回的json问题
- jquery中关于return不能退出方法的问题
- 【经验总结】全局变量在循环中不能赋值的问题
- 解决spring中注入不能是全局变量的问题
- Jquery中$.get()不能进行变量修改的问题------异步问题
- python 中全局变量的修改
- jQuery的ajax()方法提交数组问题
- jQuery的ajax()方法提交数组问题
- jQuery的ajax()方法提交数组问题
- jquery处理ajax的方法问题
- jquery ajax 不能正常调用success的问题
- jQuery中Ajax-ajax方法
- jquery ajax中支持哪些返回类型以及js中判断一个类型常用的方法?
- Android adb offline 的解决方案
- 解决ubuntu无法调整和保存屏幕亮度的问题
- wpf中后台代码更改字体或者背景颜色
- C++ stack
- WIN32界面开发之二:GDI+中的局部刷新技术
- 分享一个jquery ajax 中不能修改全局变量问题的方法
- ZOJ 3811 Untrusted Patrol 标记+dfs
- 新浪微博第三方登陆网站
- 说说rc.local
- Codeforces 464B. Restore Cube
- RocketMQ原理解析-Remoting3.通信层整体交互图
- memcached_1 初始学习
- Java NIO学习图文分析
- 菜鸟程序员的成长之路(三)——2014,逝去的半年,奋斗的半年