次のシナリオで 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: {},
contentType: "application/json",
dataType: "json"
});
}
$.when(addUser()).pipe(addUserSuccess).then(displayUsers)
しかし、これは機能しません。何かが欠けているか間違っていることはわかっています。何か助けてもらえますか?
ベストアンサー1
addUsersSuccess では、getUsers を返す必要があります。これは単純なタイプミスです。主なアイデアは完全に正しく、パイプも適切に使用しています :)