我有一个函数,该函数通过JQuery的$ .post()方法发出发布请求,并从API检索客户列表。我必须在一个下拉列表中加载此客户列表,以便用户选择一个。然后,用户将有可能在客户端上添加另一个下拉列表,该列表必须填充有以前从API提取的相同数据。
function fillCustomerList(selector) {
let req =
{
"api_uid": /*myapiuid*/,
"api_key": /*myapikey*/
};
req = JSON.stringify(req);
$.post("https://api.fattureincloud.it:443/v1/clienti/lista", req, "json")
.done(function (data) {
var customerList = data["lista_clienti"];
//fill first product list with products
for (let i = 0; i < customerList.length; i++) {
$(selector+" .customerList").append("<li class='list-group-item'>" + customerList[i]["nome"] + "</li>");
}
}).fail(function () {
//TODO show error message
console.log("getCustomerList error");
});
var customerList = data["lista_clienti"];
//fill first product list with products
for (let i = 0; i < customerList.length; i++) {
$(selector + " .customerList").append("<li class='list-group-item'>" + customerList[i]["nome"] + "</li>");
}
}
我试图做的是访问以前填充的下拉列表及其内容,只是复制它,然后显示相同的内容。
$(document).ready(function () {
var ncustomers = 0;//number of customers
//Add first customer
ncustomers++;
AddCustomer(ncustomers);
//filling list with data fetched from api
fillCustomerList("#customer-1");
/*Trying to get list content*/
$("#customer-1 .customerList).html();//this is empty, since the request
//hasn't finished yet and filled the list
});
由于请求是异步的,因此当我尝试访问列表时,它仍然为空。
我发现的唯一解决方案是,每当用户想要生成新的下拉列表时,都要从API重新获取数据,考虑到我对服务的API调用次数。
有没有一种方法,我只需要一次发出请求?还是我必须通过许多不同的请求来检索相同数据?