2つのAjax処理で困っています。
1つ目のajax の結果によって2つ目のajaxを起動させるかどうかを選択したいと思っています。
下のコードでは1つ目のAjaxを持つ関数funcParam() が true を返せば2つ目のAjaxを持つ
関数funcAnimal()を実行し、false を返したら、処理を中断したいと考えています。
でもよく考えたら、1つ目のAjaxを持つ関数funcParam() から返ってくるのは true か false
かではなく、promiseのオブジェクトですので、true か false を判定しようもないことがわかりました。
goSearch() の中味をどのように書いたらよいのか、教えて下さい。
よろしくお願い致します。
【code】
function goSearch(){ var promise1 = funcParam(); promise1.then(funcAnimal); } // 1つ目のAjax function funcParam(){ var dfd1 = $.Deferred(); var number = $('#numberText').val(); $.ajax({ type: "POST", url: "../code/SearchCategory.php", data: {"number":number}, dataType: 'text', }).done(function(response) { if(response == "bird"){ $('#categoryText').get(0).value = response; return true; }else{ return false; } dfd1.resolve(); }).fail(function(response) { alert('error-1'); }).always(function() { }); return dfd1.promise(); } // 2つ目のAjax function funcAnimal(){ var dfd2 = $.Deferred(); var category = $('#categoryText').val(); $.ajax({ type: "POST", url: "../code/SearchAnimal.php", data: {"category":category}, dataType: 'text', }).done(function(response) { $('#nameText').get(0).value = response; dfd2.resolve(); }).fail(function(response) { alert('error-2'); }).always(function() { }); return dfd2.promise(); }
回答2件
あなたの回答
tips
プレビュー