ASP.NET MVC3 AJAX.begin AjaxOptions OnSuccess OnFailure问题

ASP.NET MVC3 AJAX.begin AjaxOptions OnSuccess OnFailure问题,asp.net,asp.net-mvc-3,Asp.net,Asp.net Mvc 3,我的问题是调用OnFailure回调的条件是什么,运行时如何知道ajax调用失败(ajax助手使用一些http响应状态代码来表示这一点?然后会是什么?)。 如果无论ajax调用失败或成功都更新了UpdateTargetId的html,那么我应该如何正确处理错误呢。非常混乱…AjaxOptions中的OnFailure查找JavaScript函数 <script> function onError(ajaxContext) { var response = aj

我的问题是调用OnFailure回调的条件是什么,运行时如何知道ajax调用失败(ajax助手使用一些http响应状态代码来表示这一点?然后会是什么?)。
如果无论ajax调用失败或成功都更新了UpdateTargetId的html,那么我应该如何正确处理错误呢。非常混乱…

AjaxOptions中的OnFailure查找JavaScript函数

<script>
    function onError(ajaxContext) {
        var response = ajaxContext.get_response();
        var statusCode = response.get_statusCode();
        alert("Error occured. Status code = " + statusCode);
    }
</script>

函数onError(ajaxContext){
var response=ajaxContext.get_response();
var statusCode=response.get_statusCode();
警报(“发生错误。状态代码=“+statusCode”);
}
在HTML中编写此代码以在出现错误时获得警报

<div id="updateDiv">
@using (Ajax.BeginForm(new AjaxOptions { HttpMethod = "Post", InsertionMode = InsertionMode.Replace, UpdateTargetId = "updateDiv", OnFailure = "onError" })) 
{ 
  @*Your HTML form code goes here.*@
}
</div>

@使用(Ajax.BeginForm(新的AjaxOptions{HttpMethod=“Post”,InsertionMode=InsertionMode.Replace,UpdateTargetId=“updateDiv”,OnFailure=“onError”}))
{ 
@*您的HTML表单代码在这里*@
}

函数OnSuccess(){
警惕(“成功”);
}
函数OnFailure(ajaxContext){
var response=ajaxContext.get_response();
var statusCode=response.get_statusCode();
警报(“故障”);
在这里,你可以对div做任何你想做的事。
$('#targetDiv').empty();
}
@使用(Ajax.BeginForm(“索引”、“主页”,
新选择
{ 
UpdateTargetId=“targetDiv”,
OnSuccess=“OnSuccess”,
OnFailure=“OnFailure”
})
{
... 
}

根据MSDN官方网站: 如果响应状态不在200范围内,则调用此函数


在ASP.NET MVC 4中,似乎有些变化。我必须使用以下属性来读取响应和状态:

ajaxContext.responseJSON
ajaxContext.responseText
ajaxContext.status
ajaxContext.statusText

谢谢,这很有用,但我仍然想知道它是如何知道呼叫失败的…我应该在控制器中写些什么吗…是的,如果错误是业务错误,例如重复名称,您需要发送一个错误代码,它将在OnSuccess()上被接受。如果错误超出您的控制范围,它将被捕捉到错误。@mangeshpippalkar如果错误“超出您的控制范围”,并且您在web.config中启用了customerrors,则永远不会调用OnFailure。我有一个类似的问题。此链接提供了一个示例的详细答案。
ajaxContext.responseJSON
ajaxContext.responseText
ajaxContext.status
ajaxContext.statusText