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

时间:2011-08-22 04:51:35

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

我的问题是调用OnFailure回调的条件是什么,运行时如何知道ajax调用失败(ajax帮助程序使用一些http响应状态代码来指示它会是什么呢?)。 如果更新UpdateTargetId的html,无论ajax调用失败还是成功,那么我应该如何正确处理错误呢。很困惑......

4 个答案:

答案 0 :(得分:18)

 <script type="text/javascript">
        function OnSuccess() {
            alert('Success');
        }
        function OnFailure(ajaxContext) {
            var response = ajaxContext.get_response();
            var statusCode = response.get_statusCode();
            alert('Failure');
            Here you can do whatever you want with the div.
            $('#targetDiv').empty();
        }
    </script>
    <div id="targetDiv">
    @using (Ajax.BeginForm("Index", "Home", 
      new AjaxOptions 
           { 
             UpdateTargetId = "targetDiv",
             OnSuccess ="OnSuccess",
             OnFailure ="OnFailure" 
           })
      {
        ... 
      }
  </div>

答案 1 :(得分:4)

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

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

答案 2 :(得分:3)

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

AjaxOptions.OnFailure Property

答案 3 :(得分:0)

AjaxOptions中的OnFailure查找JavaScript函数

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

在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>