在运行控制器之前,Ajax调用会出错

时间:2018-10-30 01:14:19

标签: javascript c# ajax asp.net-mvc-5

我有一个ajax调用,在运行控制器之前就陷入了错误块。 奇怪的是,有时(在多次请求之后)它确实可以成功运行,但没有将cookie保存在控制器中。

我认为可能是ajax调用或某些权限错误。 AJAX通话:

$('#loginAWGPE').on('click', function () {
    var cpfLogin = $('#cpfValidacao').val().replace(/[^\d]+/g, '');
    console.log(cpfLogin);
    console.log(urlOrigem + appPath + "Login/validaCPF");
    $.ajax({
        type: 'POST',
        url: urlOrigem + appPath + "Login/validaCPF",
        datatype: String,
        data: {
            cpf: cpfLogin
        },
        success: function (teste) {
            console.log('dataS: ' + teste);
            if (teste = true) {
                window.location = urlOrigem + appPath + "ProjetoEletrico/Index";
            } else {
                alert('CPF não cadastrado na Agência Virtual!');
            }
        },
        error: function (teste2) {
            console.log('dataE: ' + teste2);
            alert('Erro na execusão');
        }
    });
});

-------控制器:

public JsonResult validaCPF(String cpf)
    {
        if (String.IsNullOrEmpty(cpf))
        {
            Response.StatusCode = (int)HttpStatusCode.Unauthorized;
            return Json(false);
        }
        WebAPIPArameter id = new WebAPIPArameter();
        id.ParameterName = "id";
        id.ParameterValue = cpf;
        List<WebAPIPArameter> list = new List<WebAPIPArameter>();
        list.Add(id);
        Usuario userInfo = (Usuario)apiClientSistema.GetItem<Usuario>(serviceNameUserInfo, list);
        if (userInfo == null)
        {
            return Json(false);
        }
        else
        {
            CultureInfo cult = new CultureInfo("pt-BR");
            String dataStr = userInfo.DTH_ULTIMO_ACESSO.ToString("dd/MM/yyyy HH:mm:ss", cult);
            HttpCookie cook = new HttpCookie("UserInfo");
            cook["cpfCnpj"] = userInfo.NUM_CPF_CNPJ_CLIENTE.ToString();
            cook["nomeCompleto"] = userInfo.NOM_CLIENTE;
            cook["dataAcesso"] = dataStr;
            cook["email"] = userInfo.END_EMAIL;
            cook.Expires = DateTime.Now.AddHours(4);
            Response.Cookies.Add(cook);
            //cookie de autenticacao
            FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
                                            1,
                                            cpf,  // Id do usuário é muito importante
                                            DateTime.Now,
                                            DateTime.Now.AddHours(4),
                                            true,   // Se você deixar true, o cookie ficará no PC do usuário
                                            "");
            HttpCookie cookieAuth = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(authTicket));
            Response.Cookies.Add(cookieAuth);
        }
        Response.Redirect("~/ProjetoEletrico/Index");
        return Json(true);
    }

1 个答案:

答案 0 :(得分:0)

我知道了。这是一个愚蠢的错误。 我忘记了表单按钮中的“提交”,也忘记了ajax调用。