2011-08-22 15 views
13

私の質問は、OnFailureコールバックの条件とは何か、ランタイムはajax呼び出しが失敗したことをどのように知っていますか(ajaxヘルパーは、それはどういう意味ですか?) そして、ajax呼び出しが失敗した場合でも成功した場合でも、UpdateTargetIdのhtmlが更新されていれば、正しくエラーを処理する必要があります。 JavaScript関数HTMLでASP.NET MVC3 AJAX.BeginForm AjaxOptions OnSuccess OnSuccess OnFailure問題

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

がエラーになるとアラートを取得するために、これを書くために非常に混乱して... AjaxOptionsで

答えて

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> 
+2

ありがとう、それは便利ですが、私はそれがどのようにコールが失敗したのか知りたいと思っています...私はコントローラに何かを書くべきですか? ... – Rn2dy

+0

エラーが業務上のエラー(例:Duplicate Name)の場合は、OnSuccess()で受け付けられるエラーコードを送信する必要があります。エラーが制御できない場合、OnErrorで捕捉されます。 –

+0

@MangeshPimpalkarエラーが「あなたのコントロールを超えていて、web.configでcustomerrorをオンにした場合、OnFailureは呼び出されません。 – gangelo

0

ONFAILUREが見えます。公式MSDNのウェブサイトによると

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

ASP.NET MVCで4つの物事が少し変わっていたようです。

ajaxContext.responseJSON 
ajaxContext.responseText 
ajaxContext.status 
ajaxContext.statusText 
関連する問題