解决Ajax全局变量赋值的问题

        在做项目的过程中,以下代码:在1处a为0。然后通过一个ajax请求一个值为1的data赋予a,在2处a为1。然后来到3这里的时候,a还是为0。通过查找网络,得出原因是ajax默认的是异步传输数据,在2处的a的scope只在ajax方法内部。

//1
	var a = 0;

	$.ajaxSetup({
		async : false
	});
	$.get("a.action", function(data) {
		//2
		a = data;
		alert(a);
	});
	//3
	alert(a);

为了解决上面所遇到的问题,我们把ajax异步传输改为同步。

在与ajax方法之前同一个作用域的位置,设置为同步传输。

//设置为同步传输
	$.ajaxSetup({
		async: false
	}); 

	//1
	var a = 0;

	$.ajaxSetup({
		async : false
	});
	$.get("a.action", function(data) {
		//2
		a = data;
		alert(a);
	});
	//3
	alert(a);

最好不要把同步传输的设置放在全局范围内,否则设置之后的ajax请求都为同步的了。

时间: 2024-09-08 10:52:16

解决Ajax全局变量赋值的问题的相关文章

浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法

 本篇文章主要是对jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们发现程序执行完后并没有获取到我们想要的值,这时很有可能是因为你用的是ajax的异步调用async:true(默认情况),如:    代码如下: function ManageCommentText(text) { var result = te

ajax给全局变量赋值问题解决示例

 ajax默认是异步请求,如果要在$.ajax({里面给全局变量赋值,需要改为同步操作,即加上async : false,就可以了 今天在做项目时,遇到了一个问题.我用的是ajax,要在$.ajax({里面给一个全局变量赋值,结果死活赋值不上,纠结了好半天,后来上网查了查,才知道,ajax默认是异步请求,(当要赋值时,此时的值没有拿到,所以赋值不成功)如果要在$.ajax({里面给全局变量赋值,需要改为同步操作,即加上async : false,就可以了.     代码如下: $.ajax({ 

ajax给全局变量赋值问题解决示例_AJAX相关

今天在做项目时,遇到了一个问题.我用的是ajax,要在$.ajax({里面给一个全局变量赋值,结果死活赋值不上,纠结了好半天,后来上网查了查,才知道,ajax默认是异步请求,(当要赋值时,此时的值没有拿到,所以赋值不成功)如果要在$.ajax({里面给全局变量赋值,需要改为同步操作,即加上async : false,就可以了. 复制代码 代码如下: $.ajax({ type:"post", url:"a.action", data: {}, dataType: '

基于Jquery.history解决ajax的前进后退问题_AJAX相关

以下内容是关于Jquery.history解决ajax的前进后退问题,具体详情请看下文. 本文的前提是基于后台的,所以这里不会考虑seo的问题.同时,基于后台的管理系统,也不需要被收藏,所以也不会考虑刷新的这种类似直接敲网址的情况!!! 这里使用的是html5中的history.state 来解决. 网上已经有了js的开源解决方案pushState.详见pjax 但是这个方案不适合我的项目(后台项目),尤其是主要的方法有点不够用. 我使用的是  jquery.history.js  可以参考这个

基于Jquery.history解决ajax的前进后退问题

以下内容是关于Jquery.history解决ajax的前进后退问题,具体详情请看下文. 本文的前提是基于后台的,所以这里不会考虑seo的问题.同时,基于后台的管理系统,也不需要被收藏,所以也不会考虑刷新的这种类似直接敲网址的情况!!! 这里使用的是html5中的history.state 来解决. 网上已经有了js的开源解决方案pushState.详见pjax 但是这个方案不适合我的项目(后台项目),尤其是主要的方法有点不够用. 我使用的是  jquery.history.js  可以参考这个

escape解决AJAX中文乱码的简单方法

在使用AJAX开发网站时,经常有朋友遇到乱码的问题,而且一下子难以找到解决方法.其实解决AJAX中文乱码问题很简单. 1.服务端程序: <% liststr="AJAX中文乱码的简单解决方法" sponse.write escape(liststr) '用escape编码 %> 2.客户端JAVASCRIPT程序 function toserver(url) { var req = new XMLHttpRequest(); if (req) { req.onreadyst

长轮询 阻塞-如何解决ajax long poll 阻塞其他http请求

问题描述 如何解决ajax long poll 阻塞其他http请求 服务器:lighttpd 我写了ajax long poll,在服务器中对这个请求进行了while循环,有消息返回,无消息就等待10s后返回一个值让ajax再次请求.但是这样会让其他的请求反应变得很慢,基本会慢上好几秒,请问能有什么方法解决这个问题?

解决Ajax加载JSon数据中文乱码问题

一.问题描述 使用zTree的异步刷新父级菜单时,服务器返回中文乱码,但项目中使用了SpringMvc,已经对中文乱码处理,为什么还会出现呢? 此处为的异步请求的配置: Java代码 async: { enable: true, url: basePath + '/sysMenu/listSysMenu', autoParam: ["id=parentId"] } SpringMvc中文字符处理: Java代码 <mvc:annotation-driven> <mvc

ajax-求大神解决AJAX问题,小弟快哭了。。。。

问题描述 求大神解决AJAX问题,小弟快哭了.... 注册界面的表单验证,使用ajax post传输,可是总是返回not found.同样的代码我用于做其他的功能都没有问题.求大神帮忙啊,搞了一晚上了老是搞不定 <script type="text/javascript"> /* ajax 的几个步骤: 1.建立XmlHttpRequest对象 2.设置回调函数 3.使用Open方法建立与服务器的连接 4.向服务器发送数据 5.在回调函数中针对不同响应状态进行处理 */ v