Defferredで括ったAjaxの戻り値を利用したい
Ajax以前 関数の理解が足りないのかも知れませんが、ご教示頂けませんでしょうか?
以下が現況のコーディングで、当方としては
AjaxでDBからのデータ取得に成功した際は、その内容を画面の項目へ格納、
DBからの取得に失敗した場合は エラーコードを画面にうったえる動作を達成したいと考えています。
====質問====
DB該当なし・接続エラー等の理由でrejectされた際も、DB取得に成功してresolveになった際も、呼び出し側に値を戻すような動作を達成したいのですが、現況のdef.done(function(data){とdef.fail(function(data){ の部分は本来どういった記載を行えば良いのでしょうか?
分からないなりにやってみたものの、現況は戻り値を得られていないようです。どこかを直せば無事に動作するようになるのか、根本的に考え・方針を見直すべきなのかさえ分からない状況です、ご見解を頂けたら幸いです。
var text = $(this).parent().parent().find("input");
var param = text.eq(0).val();
var def = costGet(param);
def.done(function(data){
var unitp = String(data[0]).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
var totalp = String(data[0] * $(this).val()).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
label.eq(3).html(unitp); //★単価★
label.eq(4).html(totalp); //★金額★
return false;
});
def.fail(function(data){
label.eq(3).html("");
label.eq(4).html("");
alert(data[0]);
return false;
});
//単価情報の取得
function costGet (cd) {
var dp_a = new $.Deferred();
$.ajax({
url: "cdcostget.php",
type: "POST",
dataType: "json",
data: {
in_cd: cd,
in_ymd: costGetYM() // 引数別途入手
}
})
.done(function(data){
if (data.length <= 0) {
dp_a.reject("err#014"); //【該当なし】
} else {
dp_a.resolve(data[0]); //【成功】
}
})
//サーバ接続エラー
.fail(function(data){
console.log("###原価情報取得時のサーバ系エラー###");
dp_a.reject("err#013"); //【その他エラー】
});
return dp_a;
}