页面中 全局变量 的更新(ajax也可以对全局变量 进行更新)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuhangRS/article/details/81347847

1

2

3

4

5

6

7

8

9

10

11

12

function checkoldpass($pass) {

    $.ajax({

        type: 'get',

        url: '/admin/check',

        data: {'password': $pass},

        dataType: 'json',

        success: function (data) {

            console.log(data)

        }

    });

    console.log(123);

}

这个运行结果是:

浏览器控制台先打印:123,然后才打印返回来的data。

为什么会是这样。因为js ajax请求原生就是异步的。

这就是说如果你在ajax回调函数外声明的变量,在ajax外打印会是null或者是undefined

1

2

3

4

5

6

7

8

9

10

11

12

13

function checkoldpass($pass) {

    var msg = null;

    $.ajax({

        type: 'get',

        url: '/admin/check',

        data: {'password': $pass},

        dataType: 'json',

        success: function (data) {

            msg = data

        }

    });

    console.log(msg);

}

这样打印出来的msg肯定是null。因为是异步的,所以js顺序执行到msg这里肯定是空了。

解决这个问题的办法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

function checkoldpass($pass) {

    var msg = null;

    $.ajax({

        type: 'get',

        url: '/admin/check',

        data: {'password': $pass},

        dataType: 'json',

     async:false,

        success: function (data) {

            msg = data

        }

    });

    console.log(msg);

}

在请求的代码里加上async:false,把请求设置为同步的。这样只有回调之后,js才会执行下面的代码。

但这种体验个人感觉不好。还是在回调里完成其它的操作比较好。

猜你喜欢

转载自blog.csdn.net/xuhangRS/article/details/81347847