Ajax 调用在运行控制器之前出错
Posted
技术标签:
【中文标题】Ajax 调用在运行控制器之前出错【英文标题】:Ajax call falls into error before running the controller 【发布时间】:2019-04-03 00:09:31 【问题描述】:我有一个 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);
【问题讨论】:
能否包含相关的控制器代码/路由信息?falling into error block
因为你有一个错误的 console.log,你应该看到错误是什么 - 我们不能
@John 我添加了控制器
你能把它改成console.log('dataE: ', teste2);
(逗号,而不是+),这样它就不会尝试将teste2
转换成字符串(这就是它返回“[object Object]”的原因) ?
好的,所以error
的第一个参数对于调试基本上是无用 ...试试error: function (teste2, error, exception) console.log(error); console.log(exception);
【参考方案1】:
我想通了。这是一个愚蠢的错误...... 我忘记了表单按钮中的“提交”,也忘记了 ajax 调用。
【讨论】:
以上是关于Ajax 调用在运行控制器之前出错的主要内容,如果未能解决你的问题,请参考以下文章
为 AJAX 调用准备 Vuex Store 数据的正确方法
ASP.NET Core - 在没有Ajax的情况下调用javascript中的控制器方法