0
I have a scenario where I make several Ajax calls to a Webapi and with the return I load controls from an application.
I would like to create a unique method to call the API, which would receive a parameter with the link, for example 'api/List categories/'. In this method I would like to return if error occurred and the list (json) recovered.
I created the following method for calling AJAX:
const URL_BASE = "http://10.1.1.121/App/";
function executaChamadaAPI(URL_API) {
const URL_SERVICO = URL_BASE + URL_API
let resultado = {
erro: "NOK",
lista: {}
};
$.get(URL_SERVICO, function (data) {
data = $.parseJSON(data);
})
.done(function (data) {
resultado.erro = "OK";
resultado.lista = $.parseJSON(data);;
})
.fail(function () {
resultado.erro = "NOK";
})
.always(function () {
return resultado;
});
}
I would like to create a function for each control I have to load: categories, users and etc. by calling the generic method for running Ajaxecutachamadaapi, passing the path, something like that:
function carregaCategorias{
var res = executaChamadaAPI('api/ListaCategorias/');
//Aguardar a execução e retorno do método executaChamadaAPI para posteriormente usar o retorno
if (res.erro == 'OK'){
res.lista.forEach(function (o, index) {
let idCategoria = o.id;
var html = '<p>' + idCategoria + '</p>';
$("#result").prepend(html);
});
}
else{
alert('erro ao executar executaChamadaAPI' );
}
}
I did it this way, but I don’t know if it’s the best:
const URL_BASE = "http://172.16.106.87/App/";
function carregaCategorias(res) {
if (res.erro.toUpperCase() == "OK") {
res.lista.forEach(function (o, index) {
let srcImg = URL_BASE + o.PathImagem;
let idCategoria = o.id;
var html = '<p>' + idCategoria + '</p>';
console.log(html);
$("#result").prepend(html);
});
}
else
alert('errou rude');
}
function executaChamadaAPI(funcRetorno, URL_API) {
const URL_SERVICO = URL_BASE + URL_API
console.log('Entrou executaChamadaAPI ' + URL_SERVICO);
let resultado = {
erro: "NOK",
lista: {}
};
$.get(URL_SERVICO, function (data) {
data = $.parseJSON(data);
})
.done(function (data) {
//console.log(data);
resultado.erro = "OK";
resultado.lista = $.parseJSON(data);;
console.log("Success executaChamadaAPI " + resultado.lista.length);
})
.fail(function () {
console.log("error executaChamadaAPI");
resultado.erro = "NOK";
})
.always(function () {
console.log("Complete executaChamadaAPI ");
funcRetorno(resultado); //chama uma função de acordo com parâmetro passado
return resultado;
});
}
executaChamadaAPI(carregaCategorias,'api/ListaCategorias/')
Or perhaps it would be better if each function called and handled the AJAX request?
Friend, from what I’ve seen, the best would be each time you call the request function to treat it
– Gabriel.H