前端获取Ajax请求获取数据,无法赋值给全局变量

首先,ajax默认是走异步请求的,ajax异步加载数据。 但是在响应成功之后给全局变量赋值,是不成功的。刚遇到,感觉很奇怪。后来百度了,知道ajax异步加载数据,执行顺序的问题。ajax的异步响应是在最后才返回的,所以打印时,还没响应,因此赋值也是失败的。在加载页面时,ajax还未发起请求。
但有时候有些业务必须这么做。

解决:Ajax请求中添加属性  async:false;将ajax请求变为同步请求

    或者在全局设置Ajax属性
    $.ajaxSetup({
        async: false
      });

如果说ajax请求成功之后将结果数据想要赋值给一个变量,将要接受赋值的变量必须在ajax请求之前进行全局定义。

代码如下:

 1  var results;
 2         
 3         $.ajax({
 4             type: "POST",
 5             url: "ajax/checkfor1.php?action=reg_checkEmail",        
 6             data: {email:email}, 
 7             dataType: 'text', 
 8             async: false,
 9             success: function(data){                                                    
10                     results=data;
11                     return false;
12             },
13             error: function() {  
14                         
15                           alert("异常!");  
16                      }  
17         });
18         if(results==0){
19             ShowTips("用户名已经存在");  
20             return false;}

网络源码:原文链接:https://segmentfault.com/q/1010000000334467

var coordinates = (function() {
    var result;
    $.ajax({
        type:'POST',
        url:'/json',
        dataType:'json',
        data:{cmd:'coordinates'},
        async:false,
        success:function(data){
            result = data;
        }
    });
    return result;
})();
 
$(document).ready(function(){
    if(coordinates.length) {//初始化页面,把所有坐标列一个列表
      $.each(coordinates, function(index,term) {
        var $item = $('<li class="item"></li>').text('坐标:'+term[0] + ',' + term[1]).appendTo('#list');
      })
    }
}

猜你喜欢

转载自www.cnblogs.com/T8888/p/12105594.html