JavaScript 之 回调函数的返回值给全局变量赋值问题
2015-03-08 16:18
429 查看
jQuery 中,会遇到$.get(url,data,callback,type) 或 $.post(url,data,callback,type) 返回值给全局变量赋值的问题:
例如:
问题:想用JavaScript 取testController中GetIsExist的值,赋给test.aspx中的全局变量 count,可是返回的值只在$.getJSON中起作用count为8,在全局中显示时仍为1,请问该问题如何解决?
问题原因:Ajax是默认都是异步JavaScript&XML,浏览器解析页面时,JS只管执行当前代码,顺序执行。发送请求了,那是请求响应的事,它不管这些,只管继续执行在它面前的代码,所以不等Ajax响应返回,便会继续向下执行,这时你的全局 count 仍然是初始值(在这里为1),如果你在回调函数function(data){}内部alert的话,就会是8了。
方法一:直接在回调函数中实现操作
方法二:在回调函数外实现,把异步改为同步 async: false
例如:
<script language="JavaScript"> var count= 1; $.post("<%=path%>/AdminCenter/SysFunction/GetOrderNo", { parentCode: pc }, function (data) { count = data.result; }, "json"); alert(count); </script>
问题:想用JavaScript 取testController中GetIsExist的值,赋给test.aspx中的全局变量 count,可是返回的值只在$.getJSON中起作用count为8,在全局中显示时仍为1,请问该问题如何解决?
问题原因:Ajax是默认都是异步JavaScript&XML,浏览器解析页面时,JS只管执行当前代码,顺序执行。发送请求了,那是请求响应的事,它不管这些,只管继续执行在它面前的代码,所以不等Ajax响应返回,便会继续向下执行,这时你的全局 count 仍然是初始值(在这里为1),如果你在回调函数function(data){}内部alert的话,就会是8了。
方法一:直接在回调函数中实现操作
<script language="JavaScript"> var count= 1; $.post("<%=path%>/AdminCenter/SysFunction/GetOrderNo", { parentCode: pc }, function (data) { count = data.result; alert(count); }, "json"); </script>
方法二:在回调函数外实现,把异步改为同步 async: false
<script language="JavaScript"> var count= 1; $.ajax({ url: "<%=path%>/AdminCenter/SysFunction/GetOrderNo", async: false, //改为同步方式 type: "POST", data: { parentCode: pc }, success: function (data) { count = data.result; }, dataType:"json" }); alert(count); </script>
相关文章推荐
- 回调函数的返回值给全局变量的赋值问题
- ajax返回数据赋值给全局变量的问题
- Ajax获取回调函数无法赋值给全局变量的问题
- javascript中运用闭包和自执行函数解决大量的全局变量问题
- AJAX回调函数内部给全局变量赋值的问题与解决
- ajax给全局变量赋值问题解决示例
- 轻松理解javascript中的局部变量与全局变量以及this的问题
- ajax给全局变量赋值问题解决
- 【经验总结】全局变量在循环中不能赋值的问题
- javascript全局变量问题
- web-javascript出现的全局变量的问题(*)
- Jquery 使用全局变量ajax请求返回的json问题
- javascript中全局变量无法正常初始化的问题解疑
- 遇到的问题-----------定义一个全局变量,在page_load里赋值,但在其他按钮中调用仍为空
- iOS-关于页面跳转时全局变量赋值不到的问题
- 使用DWR时,回调函数的返回值没法赋给js中的全局变量
- JavaScript中写在html里的全局变量问题
- ajax异步回调函数中给外部变量赋值的问题
- $.ajax()给全局变量赋值问题解决示例
- AJAX回调函数内部给全局变量赋值的问题与解决