`
p_3er
  • 浏览: 55737 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

解决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请求都为同步的了。
分享到:
评论

相关推荐

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

    要在$.ajax({里面给一个全局变量赋值,结果死活赋值不上,纠结了好半天,后来上网查了查,才知道,ajax默认是异步请求,(当要赋值时,此时的值没有拿到,所以赋值不成功)如果要在$.ajax({里面给全局变量赋值,需要...

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

    然而,在使用jQuery的AJAX方法时,开发者经常遇到一个问题,即无法在异步调用中正确地给全局变量赋值。本文将深入探讨这个问题的原因,并提供相应的解决方案。 首先,我们需要理解AJAX的本质。AJAX的核心在于其异步...

    JQuery中使用Ajax赋值给全局变量失败异常的解决方法

    在使用JQuery进行Ajax操作时,常见的问题之一就是如何将从服务器返回的数据赋值给全局变量,特别是在异步操作中,因为可能会导致数据处理顺序的问题。 在JQuery中进行Ajax操作时,默认情况下,Ajax请求是异步的。这...

    JQuery中使用Ajax赋值给全局变量异常的解决方法

    然而,当涉及到异步操作,如Ajax请求时,赋值给全局变量可能会遇到一些问题。这是因为Ajax请求是非阻塞的,即它不会立即返回结果,而是继续执行后续代码,直到服务器响应后才调用回调函数。这就是为什么在尝试将Ajax...

    Ajax获取回调函数无法赋值给全局变量的问题

    在JavaScript编程中,Ajax(Asynchronous JavaScript and XML)是一种创建动态网页的技术,它允许在不刷新整个页面的情况下与服务器交换...通过以上方案,可以有效地解决Ajax获取回调函数无法赋值给全局变量的问题。

    ajax异步回调函数中给外部变量赋值的问题探讨

    总结来说,了解ajax和异步编程是解决外部变量赋值问题的关键,而变量作用域的理解则帮助我们认识到了问题产生的根本原因。使用现代JavaScript提供的Promise和async/await等特性,可以更加优雅地处理异步数据和编写...

    ajax内部值外部调用不了的原因及解决方法

    - 利用全局变量:可以将AJAX成功回调函数内的变量赋值给一个全局变量(或对象的属性)。这样变量就可以在全局作用域中被访问。但是这种方法需要谨慎使用,因为全局变量可能会导致命名冲突和难以追踪的bug。 - 使用...

    jquery中获得$.ajax()事件返回的值并添加事件的方法

    3. 由于 $.ajax() 是异步执行的,因此需要确保全局变量在赋值之后再被使用,可以通过一个适当的同步机制(例如:等待一个特定的事件,或者使用 $.ajax() 的同步参数)来保证数据可用。 4. 一旦全局变量中有数据,就...

    jQuery ajax 当async为false时解决同步操作失败的问题

    所以,应该使用一个全局变量来存储返回的结果,并在ajax请求之后访问这个变量来获取结果。 另外,通常不建议在实际开发中使用同步请求,尤其是在生产环境中,因为它会阻塞用户的操作,直到服务器响应。如果只是需要...

    ajax请求返回的数据看不到回调函数没有执行也没报错

    此外,对于其他开发者可能遇到的类似问题,例如AJAX回调函数不执行、数据乱码、在回调函数中使用`$(this)`失效、如何传递参数、全局变量赋值问题等,通常可以通过以下方式解决: 1. **回调函数不执行**:检查AJAX...

    js+ajax+jquery笔记

    - **调用函数**:函数可以通过函数名直接调用,或者赋值给变量后再调用,还可以接收和返回参数。对于没有返回值的函数,其返回值是undefined。 5. **Form表单对象**: - **访问方式**:可以使用`document.forms[n...

    Ajax无刷新实现步骤

    **解析**:这段代码首先定义了一个全局变量 `xmlHttp`,用于保存 XMLHttpRequest 对象。接下来根据浏览器类型选择创建对象的方式。对于支持 XMLHttpRequest 的现代浏览器直接创建一个实例,而对于不支持 ...

    ajax上传时参数提交不更新等相关问题

    - 尽量避免全局变量,将`uploadCatlog`的声明和赋值限制在适当的作用域内,以减少潜在的冲突和错误。 - 考虑使用更现代的API,如`fetch`或`XMLHttpRequest`,以替换jQuery的Ajax上传插件,它们提供了更灵活的数据...

    同页面不同用户控件如何赋值

    但这需要谨慎使用,因为过度依赖全局状态可能会导致代码复杂性和维护难度增加。 6. **使用ASP.NET AJAX和UpdatePanel**: 如果页面使用了ASP.NET AJAX,可以利用UpdatePanel进行部分页面更新。在这种情况下,用户...

Global site tag (gtag.js) - Google Analytics