【问题标题】:Ajax.BeginForm OnFailure invoked with Response, not AjaxContextAjax.BeginForm OnFailure 使用 Response 调用,而不是 AjaxContext
【发布时间】:2011-11-19 09:40:38
【问题描述】:

在我的 ASP.NET MVC3 应用程序中编写 Ajax 数据输入表单时,我有一个标准的 Ajax 错误处理程序,大致如下:

function handleAjaxError(ajaxContext) {
     var response = ajaxContext.get_response();
     var statusCode = response.get_statusCode();
     alert("Request failed, status code " + statusCode);
}

我现在发现发送到 handleAjaxError 的参数不是 Ajax 上下文,而是 Response 对象本身,出于某种原因。

这可能是 MVC3 中已知的行为变化吗?这是表单设置,如果相关的话:

@using (Ajax.BeginForm("Create", "Attendance", null, new AjaxOptions
     {   OnFailure = "handleAjaxError",
         OnSuccess = "alert('success')" },  
new  { id = "frmCreateException" }))
{
    @Html.EditorFor(m => Model)
}

控制器动作返回一个 PartialViewResult。目前的 HTTP 异常是 500,因为我还没有创建视图。

谢谢!

【问题讨论】:

    标签: asp.net-mvc-3 asp.net-ajax


    【解决方案1】:

    这可能是 MVC3 中已知的行为变化吗?

    是的,与使用 Microsoft*.js 的先前版本相反,ASP.NET MVC 3 使用不显眼的 jQuery 处理 AJAX 内容。所以传递给错误处理程序的第一个参数是 jqXHR 对象。

    并获取响应文本和状态码:

    alert(ajaxContext.status);
    alert(ajaxContext.responseText);
    

    【讨论】:

    • 谢谢,在任何地方都找不到。
    猜你喜欢
    • 2012-09-17
    • 2011-07-27
    • 2015-06-07
    • 2018-09-21
    • 1970-01-01
    • 2020-04-27
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多