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

2

I am developing a CEP query page where the information is sent and returned 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, either looks for the address by entering 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 value for the ajax "error" method. With the following error: "Unexpected end of JSON input".

How to make the "Sucess" methods receive the null normally?

    
asked by anonymous 19.08.2016 / 17:26

1 answer

2

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

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

Then you check if it is null on 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" });
    ...
    
22.08.2016 / 03:41