我试图为以下场景实现jQuery Deferred.pipe()方法:
>通过$ .ajax()在DB中添加一个用户
>获取用户是否被正确添加的响应。
>如果成功添加,通过$ .ajax()从服务器获取所有用户列表,
>通过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: {},dataType: "json"
});
}
$.when(addUser()).pipe(addUserSuccess).then(displayUsers)
但这不行。我知道有一些遗漏或错误。任何帮助?
解决方法
在addUseRSSuccess中,你应该返回getUsers。这是一个简单的错字,你的主意是完美的,正在使用管道,因为它应该是,很好:)