在jquery中使用ajax获取和分配数据时,如何控制代码的执行顺序?

在jquery中使用ajax获取和分配数据时,如何控制代码的执行顺序?,jquery,ajax,Jquery,Ajax,这些是我的代码的一部分: 我的问题是,用户名分配表达式是在函数getuserinformation(userId)之前执行的,我甚至认为我把getuserinformation()放在了它们前面 全局变量: userInformation = {}; 调用事件以分配值的函数: function assignValues(){ getUserInfomation(userId); userName = userInformation['user_name']; // u

这些是我的代码的一部分:

我的问题是,用户名分配表达式是在函数getuserinformation(userId)之前执行的,我甚至认为我把getuserinformation()放在了它们前面

全局变量:

userInformation = {};
调用事件以分配值的函数:

function assignValues(){
   getUserInfomation(userId);

       userName =  userInformation['user_name'];  // undefined
       userNickName= userInformation['user_nickname'];// undefined

}
通过AJAX从数据库获取数据的函数:

function getUserInfomation (userId){


            $.ajax({
              url: 'include/user.login.process.php',
              data:({userId: userId }),
              success: function(data) {

                if(data){
                    JSON.parse(data, function (key, value) {
                        userInformation[key] = value;
                        console.log(key +' value is '+obj.userInformation[key]);
                    });
                }
             }
           });

        }

非常感谢

您需要在.ajax调用的success函数中执行赋值操作


$.ajax是一个异步操作,因此当您调用它时,它会立即返回执行代码的下一行(在本例中,userName=..),但您尚未从服务器返回数据,这就是成功回调的目的。

$。ajax方法是异步的。 您必须更改以将ajax请求后必须执行的所有代码放入回调函数: 因此,您必须使用如下代码:

function getUserInfomation (userId){
        $.ajax({
          url: 'include/user.login.process.php',
          data:({userId: userId }),
          success: function(data) {

            if(data){
                JSON.parse(data, function (key, value) {
                    userInformation[key] = value;
                    console.log(key +' value is '+obj.userInformation[key]);

                    assignValues();
                });
            }
         }
       });

    }
此外,您还可以同步调用ajax函数。但这是一种糟糕的做法,因为您将失去ajax的优势

        $.ajax({
          url: 'include/user.login.process.php',
          data:({userId: userId }),
          async:false,
          success: function(data) {
          ...