我正在摸索如何将 2 个 jQuery ajax 调用的结果组合起来,这些调用将结果返回到同一个 DOM 元素中。这是我的设置:
- 有 2 个调用:一个来自食物列表,第二个来自成分列表
- 两个调用都返回一个成分列表
- 这个想法是根据 2 个来源(食物清单和成分清单)制作购物清单(要购买的成分)
- 用户可以通过选择食物(从数据库中检索成分)来创建购物清单,也可以直接从成分列表中选择成分
问题:这 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);
}
});
});
我尝试$('.ingredients').html(result);
使用append
而不是使用这条线,html
但这不起作用,因为用户应该能够从列表中删除成分(请参阅两个函数中的 if 条件)。