关于ajax请求数据,并将数据赋值给全局变量的一些解决方法

在使用ajax请求数据是,开始的时候是打算将ajax的数据取出,并赋予给全局变量,但是在实际编码过程中发现并不能将数据赋予给最开始定义的全局变量,出现这个问题的原因是由于ajax异步加载的原因,所以只能用其他方法来解决,下来是解决的方法

第一个解决方法没有使用全局变量,直接在ajax请求中将请求到的数据赋值给需要的地方
第二个方法是将请求到的数据,通过方法传参来传递给一个方法,然后再方法中来调用请求到的数据,下面是实现的代码

var  testData;

        $.ajax({
            url: ‘/test‘,
            type: ‘GET‘,
            dataType: ‘json‘,

            success: function (data, status) {
                testData=data;
                loadData(testData);

            }
        });

function loadData(testData) {
}

这样就可以在loadData中调用请求到的数据了

第三个方法就是将ajax的异步加载改为同步加载

$.ajax({
url: ‘url‘,
type: ‘GET‘,
dataType: ‘json‘,
sync:false,
success: function (data, status) {

}
});
---------------------

原文地址:https://www.cnblogs.com/dand/p/10534571.html

时间: 2024-11-09 17:32:10

关于ajax请求数据,并将数据赋值给全局变量的一些解决方法的相关文章

ajax请求成功后新窗口window.open()被拦截的解决方法

ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是该操作并不是用户主动触发的,所以它认为这是不安全的就拦截了(不过如果是 _self 的话就不会有这个限制),即使 ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger('click')),浏览器也会认为不是由用户主动触发的,因此不能被安全执行,所以被拦截. 解决方法: 1.异步改为同步,即:async:false 2.将新开窗口指向为一个对象,然后修改对象的 ur

ajax请求json文件的时候缓存问题的两种解决方法

第一种是在get请求后面增加时间戳参数 // 直接读取json文件, var jsonUrl = urlPath + '/outerData/selectType.json?random='+new Date().getTime();//url 加上一个随机参数(时间也算随机参数), 就可以避免浏览器json缓存 $.getJSON(jsonUrl,function(data){ jsonData = data; /**大类*/ for(var i = 0; i < jsonData.lengt

SqlBulkCopy批量插入数据时,不执行触发器和约束的解决方法

原文:SqlBulkCopy批量插入数据时,不执行触发器和约束的解决方法 在new SqlBulkCopy对象的时候,设置一下SqlBulkCopyOptions选项即可,按位或运算 SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints using (SqlBulkCopy bulkCopy = new SqlBulkCopy(GlobalString.ConnectionString, SqlBulkCopy

SpringMVC提交数据遭遇基础类型和日期类型报400错误解决方法

使用SpringMVC开发的时候,页面如果有日期格式的数据,后台接受也是java.util.Date,则报告400错误 .下面是解决方案的演示示例: 这个是实体类,里面createDate就是java.util.Date类型 1 import java.util.Date; 2 3 public class User { 4 5 private int userId; 6 private String userName; 7 private Date createDate; 8 9 public

ajax回调函数中使用$(this)取不到对象的解决方法

如果在ajax的回调函数内使用$(this)的话,实践证明,是取不到任何对象的,需要的朋友可以参考下 $(".derek").each(function(){ $(this).click(function(){ var params = $(this).parent().serialize(); var obj=$(this).parent().siblings("div#caskContent"); var form=$(this).parent(); $.aja

巧用ajax请求服务器加载数据列表时提示loading

我们利用weui.js中的weui.loading为效果,ajax的beforeSend与complete方法,做一个加载数据时会有几秒的 loading... 要在页面需要加载的JS文件: <script src="../js/libs/weui.min.js"></script> 可以去weui的文档中下载,这是它的demo:   https://weui.io/weui.js/ 这里主要讲jQuery ajax的get,查询数据时,它的结构为: $.aja

ajax请求后台,有时收不到返回值的解决办法

昨天下午做项目遇到一个问题,贴出来方便以后翻阅,也给大家个参考. 问题: 具体做的是个文件导入的功能,导入的功能是成功了,但是界面一直得不到返回值,排查了一下午,调试的时候是可以有返回的,但是关掉浏览器调试界面,却得不到返回结果. 原因: 一直以为是我后台程序有问题,晚上回到家才想起来ajax的问题,把ajax的异步处理改为同步,就出来效果了,具体的原因请看下文详解. jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到A

ajax 请求成功之后window.open()被浏览器拦截弹窗的处理方法

之前一直使用window.open(url),打开新的切换卡加载页面,今天使用opera浏览器测试的时候发现有这么个情况. 最开始以为是window.open()的浏览器兼容性问题,所以尝试了a标签点击,form表单提交,以及window.open()添加"_blank"参数的方式都不行. 后来考虑到可能是ajax请求回调的问题.最后,百度告诉我了一个解决办法,如下. 解决方法: 1.异步改为同步,即:async:false 2.将新开窗口指向为一个对象,然后修改对象的 url,比如:

关于EasyUI 1.5版Datagrid组件在空数据时无法显示&quot;空记录&quot;提示的BUG解决方法

https://www.cnblogs.com/baiyangyuanzi/p/6514913.html 问题:jQuery easyUI中Datagrid,在表格数据加载无数据的时候,如何显示“无记录”的提示语? 解决jQuery EasyUI 1.5.1版本的Datagrid,在处理新增表格加载的数据没有记录的时候,可显示“无记录”的提示语的方法. 官网的API更新里面并没有写明是API的属性名,经过查找资料,发现一下问题: 1.官网API更新的时候漏掉了该API,没有放出: 2.源代码需要