結果を同じDOM要素に返す2つのjQuery ajax呼び出しの結果を組み合わせる方法について頭を悩ませています。これが私のセットアップです:
- 呼び出しは 2 つあります。1 つは食品のリストから、もう 1 つは食材のリストからです。
- どちらの呼び出しも成分のリストを返します
- アイデアは、2 つのソース (食品のリストと材料のリスト) に基づいて買い物リスト (購入する材料) を作成することです。
- ユーザーは、食品を選択して買い物リストを作成するか (材料はデータベースから取得されます)、または材料のリストから直接材料を選択できます。
問題:これら 2 つの呼び出しは、それぞれ単独で正常に機能しています。しかし、問題は、1 つの呼び出しの結果が常に 2 番目の呼び出しの結果を置き換え、その逆になることです。
var postUrl = "http://localhost:8000/ingredients/";
var ingrUrl = "http://localhost:8000/ingrs/";
var selectedFoods = [];
var selectedIngrs = [];
$('.foods a').click(function(event){
clickedLink = $(this).attr('id');
if (selectedFoods.indexOf(clickedLink) != -1) {
var index = selectedFoods.indexOf(clickedLink);
selectedFoods.splice(index, 1);}
else {
selectedFoods.push(clickedLink);
};
var jsonFoods = JSON.stringify(selectedFoods);
$.ajax({
url: postUrl,
type: 'POST',
data: jsonFoods,
dataType: 'html',
success: function(result){
$('.ingredients').html(result);
}
});
});
$('.ingr-list a').click(function(event) {
clickedIngr = $(this).attr('id');
if (selectedIngrs.indexOf(clickedIngr) != -1) {
var index = selectedIngrs.indexOf(clickedIngr);
selectedIngrs.splice(index, 1);}
else {
selectedIngrs.push(clickedIngr);
};
var jsonIngrs = JSON.stringify(selectedIngrs);
$.ajax({
url: ingrUrl,
type: 'POST',
data: jsonIngrs,
dataType: 'html',
success: function(result){
$('.ingredients').html(result);
}
});
});
代わりに of$('.ingredients').html(result);
を使用してこの行をいじってみましたが、ユーザーはリストから成分を削除できるはずなので、うまくいきません (両方の関数の if 条件を参照してください)。append
html