Null value is going to the ajax error function - ASP.NET MVC

Asked

Viewed 174 times

2

I am developing a ZIP consultation page where sending and feedback information is done in ajax:

$.ajax({
        url: "@Url.Action("PesquisarCEP", "CEP")" + "?cep" + retirarMascara($("#dsCEP").val()),
        type: "GET",
        success: function (retorno) {
            if (retorno != null) {
                $("#Logradouro").val(retorno.Logradouro);
                $("#Bairro").val(retorno.Bairro);
                $("#Estado").val(retorno.IdMunicipio.IdEstado.ID);
                ajaxBuscarMunicipio(retorno.IdMunicipio.ID, retorno.IdMunicipio.IdEstado.ID)
            }
            else {
                $.notify("Não foi encontrado o CEP: " + $("#enderecoCEP").val() + ", Você pode preencher o endereço manualmente.", { status: "danger" });
            }
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            bootbox.alert("Oops, Não foi possivel conectar-se ao servidor da Onofre, Tente mais tarde.");
        }

This AJAX calls a method whether it looks for the address informing the zip code, if it does not find it, the method returns null.

Controller Method:

    [HttpGet]
    public JsonResult PesquisarCEP(string cep)
    {
        try
        {
            CepRep repositorio = new CepRep();

            return Json(repositorio.PesquisarCEP(cep), JsonRequestBehavior.AllowGet);
        }
        catch (Exception)
        {

            throw new Exception("CEP não encontrado!!!!");
        }
    }

The problem is that when the method returns null, instead of going to Success, it values to the "error" method of ajax. With the following error: "Unexpected end of JSON input".

How to make "Sucess" methods receive null normally?

  • When the zip code is not found it always falls in the catch?? Could you try doing Return Json(new{})

1 answer

2


Do not return the direct value, add to a variable before:

Json(new { endereco = repositorio.PesquisarCEP(cep)}, JsonRequestBehavior.AllowGet)

After you check if the same is null in the client:

    ...
success: function (retorno) {
    if (retorno.endereco) {
    ...
    }
    else {
        $.notify("Não foi encontrado o CEP: " + $("#enderecoCEP").val() + ", Você pode preencher o endereço manualmente.", { status: "danger" });
    ...

Browser other questions tagged

You are not signed in. Login or sign up in order to post.