20

我正在尝试为以下场景实现 jQuery Deferred.pipe() 方法:

  1. 通过 $.ajax() 在数据库中添加用户
  2. 获取用户是否正确添加的响应。
  3. 如果添加成功,通过 $.ajax() 从服务器获取所有用户列表
  4. 通过 jQuery 模板显示列表

这是我尝试过的东西:

var addUserSuccess = function( data ) {
    if ( data.returnCode !== "success" ) {
        return $.Deferred().reject('Error saving user');
    }
    getUsers();
}

var addUser = function() {
    return $.ajax(url, {
        type: "POST",
        data: { username: 'test' },
        contentType: "application/json",
        dataType: "json"
    });
}

var displayUsers = function( data ) {
    $('#myTmpl').tmpl(data.d).appendTo('#myDiv');
}

var getUsers = function () {
    return $.ajax(url, {
        type: "GET",
        data: {},
        contentType: "application/json",
        dataType: "json"
    });
}

$.when(addUser()).pipe(addUserSuccess).then(displayUsers)

但这不起作用。我知道有什么遗漏或错误。有什么帮助吗?

4

1 回答 1

20

在 addUsersSuccess 中,您应该返回 getUsers。这是一个简单的错字,您的主要思想完全正确,并且正在使用管道,并且很好:)

于 2011-05-07T16:00:06.870 回答