Ajax 开始表单上的故障数据未填充



我的页面上有以下Ajax助手。

@using (Ajax.BeginForm("Activate", null, new AjaxOptions { HttpMethod = "POST", OnSuccess = "AccountActivateSuccess(data)", OnFailure = "AccountActivateFailure(data)" }, new { id = "searchForm" }))

以及以下 JS 函数。

function AccountActivateSuccess(data) {
console.log('account activate success');
console.log(data);    
//do stuff with information in data
}
function AccountActivateFailure(data) {
console.log('account activate failure');
console.log(data);
//do stuff with information in data
}

控制器的响应如下:

[HttpPost]
public ActionResult Activate(MyModel model)
{
try
{
//something spectacular
return Json(new {success = true});
}
catch (Exception e)
{
return Json(new {success = false, message = e});
}
}

当没有抛出错误时,填充"data"变量,我甚至可以放入一个消息属性并在响应中处理它。

但是,当抛出异常时,我收到以下控制台错误:

VM34:3 未捕获的引用错误:未定义数据

它甚至没有到达控制台.log。

什么给?

删除表单定义上回调的"(data("参数:

@using (Ajax.BeginForm("Activate", null, new AjaxOptions { HttpMethod = "POST", OnSuccess = "AccountActivateSuccess", OnFailure = "AccountActivateFailure" }, new { id = "searchForm" }))

并且,请验证回调 javascript 函数的作用域是全局的。

问题实际上是我需要从控制器执行e.ToString();。同样令人困惑的是,我期望AccountActivateFailure函数运行,但即使有一个例外,它也在 Try Catch 中,所以它被放入AccountActivateSuccess函数中,我没有在这里设置错误消息。

这是一个内部应用程序,因此页面上显示服务器信息没有问题。用户需要确切地知道出了什么问题,这就是这个系统的重点。

最新更新