我试图为以下场景实现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。这是一个简单的错字,你的主意是完美的,正在使用管道,因为它应该是,很好:)