AJAX Request Error - success does not work

2

Good afternoon guys,

I have the following AJAX request:

$(document).ready(function () {
  $.ajax({
           url: "/membros.aspx/populaGridMembros",
           type: "POST",
           dataType: "json",
           contentType: "application/json; charset=utf-8",
           success: function (result) {
             populaTabela(result);
           },
           error: function() {
             alert("Ocorreu um erro ao carregar os dados.");
           }
        });
    });

The populaTabela method, takes the result of the PopulateGrid function and inserted it into a table on the page.

The problem is that when I run this code on the page, there is no error in the AJAX request, but it does not enter the success parameter. In the debugging of firefox I discovered that after it executes all this javascript code, ie during the debug step by all parameters of the $ .ajax function (url, type, dataType, contentType, success, and error the $ .ajax function returns values returned by the url populateGrid function and displayed a window with the following information:

Cananyonehelpme?Thanksinadvance!

HereisthecodeforthepopulaTabelafunction:

functionpopulaTabela(response){vardata=JSON.parse(response);for(varjindata){out+="<tr><td>" + data[j].NOME + "</td><td>" +
                "</td><td>" + data[j].SOBRENOME + "</td><td>" +
                "</td><td>" + data[j].RG + "</td><td>" +
                "</td><td>" + data[j].CPF + "</td><td></tr>";
        j++;
    }
}
    
asked by anonymous 17.01.2015 / 17:30

1 answer

5

I do not know how familiar you are with jQuery / Ajax so I'll put it all in a simpler way. Okay, let me see if I understood ... the "url" you passed, are you going directly to a function that brings the return you need? Home If so, do you pass on some value / data to this function? If you are passing parameters, you should use add the "date" to be sent and if nothing happens you could change the "type" to GET. To make it easier to understand what's happening, try changing your code as I put it below ...

var confirmationValue = null; //Essa variavel é apenas de teste, pra guardar temporariamente o retorno da requisição
$(document).ready(function () {
    $.ajax({
        url: "/membros.aspx/populaGridMembros",
        type: "GET", //Caso não passe nenhum dado
        dataType: "json", //Informa que está esperando receber um json
        contentType: "application/json; charset=utf-8", //Headers da pagina que é feita a requisição
        async: true, //Informando que a requisição será feita de forma nao sincronizada com a execução dos outros scripts - como em segundo plano. De certa forma faz com que seu success só execute após a requisição ser totalmente processada
        success: function (result, status, request) {
            //Note que o result geralmente exibe ou como Object ou Document dependendo do retorno. Não tenho certeza devido a ser json - que não sou muito familiarizado
            alert("Estado atual---\n" + status + "\nResultado: " + result);
            //Abaixo está listando os header do conteudo que você requisitou, só para confirmar se você setou os header e dataType corretos
            alert("Informações da requisição: \n" + request.getAllResponseHeaders());
            confirmationValue = result; //Repassa o retorno da requisição para teste futuro
        },
        error: function (request, status, erro) {
            alert("Problema ocorrido: " + status + "\nDescição: " + erro);
            //Abaixo está listando os header do conteudo que você requisitou, só para confirmar se você setou os header e dataType corretos
            alert("Informações da requisição: \n" + request.getAllResponseHeaders());
        },
            complete: function (jqXHR, textStatus) {
            alert("Chegou ao fim: : " + textStatus);
            //Exibindo o valor que você obeteve e repassou para o confirmationValue
            //Exibindo o valor que você obeteve e repassou para o confirmationValue
            alert("Confirmation value: " + confirmationValue);
        }
    });
});

Try to run the code as I passed to check the returns you are having to assist at debug time. Particularly I would always recommend using the "success", "error" and "complete" as I put it, to facilitate reading the information of the request. Home Just to state, the "complete" will always run, so regardless of entering "error" or "success" it should display the dialog in the same way - or if you prefer, put it to display on the console. Note that I've made few changes to your code, only to collect more information. If you can not solve the problem even though you have this information, update the question by telling us what data you have been able to help us.

    
18.01.2015 / 05:58