`
qingwenxiutong
  • 浏览: 19677 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

AJAX回调函数内部给全局变量赋值后,在外部调用居然没有被赋值的原因

阅读更多

window.onload = function()

{

   var oCount = 0;//计数器

 

   //其他代码

   $.ajax({
          type: "POST",
          url: "__URL__"+"/insertimportseller",
         
          data:"email="+eml,
           success:function(data){
                if(data == 1)

                {                         
                   oCount++;

                   alert(oCount);//   得到的还是累加后的值
                }

   }

alert(oCount);//   得到的还是0

 

}

 

在外部调用oCount,发现ajax回调的函数根本没有给oCount赋值成功的原因就是:ajax同步 异步的问题。

解决办法就是

在以上方法是中使用ajax的同步调用async:false, ),只有在获取到了data值并赋值给result以后才会返回result完成该方法的调用。若设为async:true,
例:

window.onload = function()

{

   var result = text;

 

   //其他代码

   $.ajax({
          type: "POST",
          url: "__URL__"+"/insertimportseller",
          async:false,
          data:"email="+eml,
           success:function(data){
                if(data == 1)

                {                         

                   result = data;
                }

   }

 return result;

 

}

 

 

分享到:
评论
1 楼 minjie56 2018-04-24  
有没有办法 在异步的机制下 也能获取数据呢

相关推荐

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

    然而,由于Ajax的异步特性,有时会出现回调函数中的数据无法正确赋值给全局变量的问题。这个问题在实际开发中很常见,特别是对于新手开发者来说可能会感到困惑。下面我们将详细讨论这个问题及其解决方案。 首先,...

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

    总结来说,当你在jQuery的AJAX异步调用中遇到不能给全局变量赋值的问题时,应考虑调整代码结构以适应异步编程模型,如使用回调、Promise或async/await。这不仅可以解决问题,还能确保代码的可维护性和良好的性能。...

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

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

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

    在JavaScript和JQuery中,全局变量通常用于存储在整个应用程序中都可以访问的数据。然而,当涉及到异步操作,如Ajax...在处理异步数据时,确保正确地使用回调或Promise机制,以确保数据在可用时被正确赋值到全局变量。

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

    如果在Ajax请求完成之前就尝试读取返回的数据并赋值给全局变量,那么很可能获取到的数据还是初始值,因为数据尚未被填充。 为了理解解决方法,需要先了解Ajax的两个重要属性:`async`和`type`。`async`属性控制Ajax...

    ajax回调函数参数传递正确方法

    在使用AJAX进行异步通信时,`onreadystatechange`事件回调函数是一个关键部分,它会在XMLHttpRequest对象的状态改变时被触发。本文将详细讲解如何正确传递参数给AJAX的回调函数。 首先,我们需要理解回调函数的基本...

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

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

    JS回调函数的应用简单实例

    load函数将传入的函数赋值给一个全局变量myback,这样在需要的时候可以随时调用它。而save函数用于模拟后台请求操作,在请求完成后,通过调用myback函数来执行后续操作。 在b.js文件中,我们看到如下代码:load...

    JavaScript之函数

    - 闭包:函数可以访问其自身作用域、所有父级作用域以及全局作用域的变量,如果一个内部函数引用了外部函数的变量,即使外部函数执行完毕,内部函数仍然可以访问这些变量,形成了闭包。闭包常用于数据封装和实现...

    C#代码与javaScript函数的相互调用

    根据给定的信息,本文将详细探讨C#与JavaScript之间的相互调用方法,主要涉及四个方面的内容:如何在JavaScript中访问C#函数、如何在JavaScript中访问C#变量、如何在C#中访问JavaScript已有的变量以及如何在C#中访问...

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

    示例中定义了一个名为 a 的全局变量,并在 $.ajax() 的 success 回调函数里给它赋予从服务器返回的值。之后在文档加载完成后,通过调用 alert(a) 来验证 a 是否正确地包含了从服务器返回的数据。此外,示例还展示了...

    js+ajax+jquery笔记

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

    js中匿名函数的创建与调用方法分析

    - **回调函数**:在异步操作中,如Ajax请求,匿名函数常作为回调函数使用,当异步任务完成后执行。 - **作用域限制**:通过匿名函数,可以创建局部作用域,避免变量污染全局空间。例如,上述示例中,内部的匿名...

    Ajax无刷新实现步骤

    **解析**:当服务器响应后,会调用之前设置的回调函数。这里检查 `readyState` 是否为 4(表示请求已完成),以及 HTTP 状态码是否为 200(表示请求成功)。然后获取响应文本,并将其赋值给页面上的某个元素。 ####...

    JavaScript函数详解

    例如,在使用AJAX请求数据时,回调函数(callback function)被广泛应用于处理服务器响应。回调函数可以是一种定义函数的方式,用于在异步操作完成时执行相应的代码。 最后,JavaScript的函数也是一种对象,确切地...

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

    在ASP.NET开发中,用户控件(User Control)是一种可重用的自定义控件,它们可以被嵌入到Web页面中,以提供更复杂的页面布局和功能。当我们需要在一个用户控件中操作另一个用户控件的控件时,通常会涉及到页面生命...

    项目开发常见问题

    ajax回调函数中,弹出错误信息data.errorInfo一般用iAlert,因为错误信息为后台给出,前端不确定信息长度。 本文总结了用户前端Html5开发中的一些常见问题和解决方法,希望这些经验能够帮助开发者更好地理解和使用...

    JavaScript 语法

    全局变量在整个脚本中可见,而局部变量只在函数内部有效。 7. 弹出对话框:`alert()` 函数用于显示警告对话框,`text()` 应该是`test()`的误写。这里展示了如何在函数内外访问和显示变量。 8. 正则表达式测试:`...

    JS this关键字在ajax中使用出现问题解决方案

    在调用`ajax`之前,将`this`赋值给一个变量(例如`that`),然后在`success`回调中使用这个变量。这允许你在异步回调中保持对触发事件的元素的引用: ```javascript var that = this; $.ajax({ // ... success: ...

Global site tag (gtag.js) - Google Analytics