2
I have a problem of slowness in my AJAX response. I use the following code to search and return a list of results:
Javascript
function enviaBusca(url) {
var resultado = $('#resultados'),
mensagem = $('#mensagem'),
palavras = $('input[type=hidden][name=palavrasTemp]').val(),
palavraChave = $('#txt_palavra_chave').val(),
valorMinimo = $('input[type=number][name=valor_minimo]').val(),
valorMaximo = $('input[type=number][name=valor_maximo]').val(),
buscaPublicado = $('')
param = { 'buscaTermo': encodeURIComponent(palavraChave), 'palavrasBuscadas': palavras, 'buscaTipoImovel': get_lista_tipos_marcados(), 'buscaEstado': get_lista_estados_marcados(), 'buscaCidade': get_lista_cidades_marcadas(), 'buscaBairro': get_lista_bairros_marcados(), 'buscaCaptador': get_lista_captadores_marcados(), 'buscaPretensao': get_lista_pretensoes_marcadas(), 'buscaFinalidade': get_lista_finalidades_marcadas(), 'buscaSituacao': get_lista_situacoes_marcadas(), 'buscaValorMinimo': valorMinimo, 'buscaValorMaximo': valorMaximo, 'buscaPublicado': get_lista_publicados_marcadas() };
$('#loading').removeClass('invisivel');
resultado.empty();
mensagem.addClass('invisivel');
$.post(url, add_anti_forgery_token(param), function (response) {
if (response) {
if (response.length > 0) {
resultado.removeClass('invisivel');
for (var i = 0; i < response.length; i++) {
resultado.html(response);
}
}
} else {
resultado.addClass('invisivel');
mensagem.html('Nenhum resultado foi encontrado com os filtros selecionados.').removeClass('invisivel');
}
$('#loading').addClass('invisivel');
});
}
Controller
[AllowAnonymous]
[HttpPost]
public ActionResult Resultados(string buscaTermo, string palavrasBuscadas, List<int> buscaTipoImovel, List<int> buscaEstado, List<int> buscaCidade, List<int> buscaBairro, List<int> buscaCaptador, List<int> buscaPretensao, List<int> buscaFinalidade, List<int> buscaSituacao, int buscaValorMinimo, int buscaValorMaximo, List<int> buscaPublicado)
{
var palavrasTemp = palavrasBuscadas;
if (palavrasTemp != "")
{
palavrasChave.Add(palavrasTemp);
}
palavrasChave.Add(buscaTermo);
if (!Request.IsAuthenticated)
{
buscaSituacao.Clear();
buscaSituacao.Add(1);
buscaPublicado.Clear();
buscaPublicado.Add(1);
}
var lista = ImoveisModel.RecuperarListaBusca(palavrasChave, buscaTipoImovel, buscaEstado, buscaCidade, buscaBairro, buscaCaptador, buscaPretensao, buscaFinalidade, buscaSituacao, buscaValorMinimo, buscaValorMaximo, buscaPublicado);
ViewBag.TermoBuscado = palavrasChave;
ViewBag.ListaImoveis = lista;
ViewBag.QuantidadeRegistrosEncontrados = lista.Count();
return PartialView(lista);
}
JSON sent
param = { 'buscaTermo': encodeURIComponent(palavraChave), 'palavrasBuscadas': palavras, 'buscaTipoImovel': get_lista_tipos_marcados(), 'buscaEstado': get_lista_estados_marcados(), 'buscaCidade': get_lista_cidades_marcadas(), 'buscaBairro': get_lista_bairros_marcados(), 'buscaCaptador': get_lista_captadores_marcados(), 'buscaPretensao': get_lista_pretensoes_marcadas(), 'buscaFinalidade': get_lista_finalidades_marcadas(), 'buscaSituacao': get_lista_situacoes_marcadas(), 'buscaValorMinimo': valorMinimo, 'buscaValorMaximo': valorMaximo, 'buscaPublicado': get_lista_publicados_marcadas() }
The query runs until fast, the time varies from 20 to 600ms depending on the amount of results obtained but the problem is the return of AJAX, it takes a few minutes to assemble the screen and hide the loading div ... What could be wrong?
Welcome Cristiano. Have you checked if the problem is not in the Response loop? This loop doesn’t seem necessary, I don’t know what’s in Sponse, but regardless of the size it’s replacing the html N times but always the same value (Sponse).
– George Wurthmann
So George, the loop is exactly to fill the list of results (in this case list of properties found with filters). With few results even returns fast but from 10 results it takes a lot of time to return, even freezes the screen preventing navigation or selection of other filters for the search.
– Cristiano
It would be easier to get help if you post the controller code as well and give an example of how the return is. But assess if the answer below no longer meets your needs.
– George Wurthmann
I added the Controller code, as I told the friend below my return is a List<Imoveismodel>.
– Cristiano