I'm having a slow response problem from my AJAX. 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 submitted
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 AJAX return, it takes a few minutes to mount the screen and hide the div loading ... What can to have it wrong?