0

谁能逐行解释,我不明白这个回调和原型是如何工作的,尤其是js文件中的函数(回调)

user.getUsers(function (theUsers) {
     $('#users-table-wrapper').html(user.getATable(theUsers));
});

HTML 中的这一部分

JS文件

function User () {

}
User.prototype.getUsers = function (callback) {
    $.ajax({
        url: 'posting.php',
        data: {
            request:'get-users'
        },
        type:'post',
        dataType: 'json',
        success: function(users){
//            callback(users);
            if (callback) { callback(users); }
        }
    });
}

这是我的 index.html

theUser 未声明但仍然有效。据我所知,当我键入 funcion (theUser) 时,theUser 是一个参数或参数。它必须在某处声明。

似乎它们都不是....这是如何工作的?

<!DOCTYPE html>
<html>
<head>
    <title>Users</title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script src="User.js"></script>
    <script>
        $(function () {
            var user = new User();
            user.getUsers(function (theUsers) {
                $('#users-table-wrapper').html(user.getATable(theUsers));
            });
        });   
    </script>
</head>
<body>
    <div class='main-wrapper'>
        <h3>Users</h3>
       <div id="users-table-wrapper">
       </div>
    </div>    
</body>
</html>
4

2 回答 2

1

theUsers是您作为回调提供的匿名函数的参数:

function (theUsers) {
 $('#users-table-wrapper').html(user.getATable(theUsers));
});

在成功方法中User.getUsers,你会看到它是这样工作的:

success: function(users){
            if (callback) { callback(users); }
        }

因此,如果 AJAX 调用成功,并且定义了回调,则users包含成功检索的数据的参数将作为第一个参数传递给回调函数。由于第一个参数是theUsers在匿名回调定义中命名的,因此它在方法中的显示方式就是这样,使其自身可用于user.getATable(theUsers).

于 2013-09-18T19:25:33.323 回答
0

theUser是函数的命名参数。

调用该函数时,它获取传递的第一个参数的值。
你在这里调用函数:

callback(users); 
于 2013-09-18T19:21:04.997 回答