2012-11-09 110 views
0

我正在做一個MVC3動作的Ajax請求,我想在成功或錯誤函數中處理JsonResult。 目前的行爲很奇怪:在命中我的斷點之前,它會觸發錯誤函數。 任何人都可以幫助我,並有一個提示?MVC3 ajax動作請求:處理答案

我的觀點:

<form id="myForm"> 
    //fields go here... 
    <button id="myButton" onclick="myFunction();">ButtonName</button> 
</form> 

AJAX調用:

function myFunction() {  
if ($('#myForm').valid() == false) { 
    return; 
} 
var data = { 
    val1: $("#val1").val(), 
    val2: $("#val2").val() 
}; 
var url = "/Controller/Action"; 
$.ajax({ 
    url: url, 
    type: 'POST', 
    dataType: 'json', 
    cache: false, 
    data: data, 
    success: function (data, statusCode, xhr) { 
     alert('1'); 
     if (data && data.Message) { 
      alert(data.Message); 
      alert('2'); 
     } 
     alert('3'); 
    }, 
    error: function (xhr, errorType, exception) { 
     alert('4'); 
     var errorMessage = exception || xhr.statusText; 

     alert("There was an error: " + errorMessage); 
    } 
}); 
return false; 

}

我的行動:

[HttpPost] 
    public ActionResult Action(Class objectName) 
    { 
     var response = new AjaxResponseViewModel(); 

      try 
      { 
       var success = DoSomething(objectName); 

       if (success) 
       { 
        response.Success = true; 
        response.Message = "Successful!"; 
       } 
       else 
       { 
        response.Message = "Error!"; 
       } 
      } 
      catch (Exception exception) 
      { 
       response.Success = false; 
       response.Message = exception.Message; 
      } 

      return Json(response); 
    } 

如果在Ajax調用看我得到直接警報#4和只有當時e行動被稱爲已經太晚了。不幸的是這個例外是空的。之後直接關閉視圖。

+1

服務器拋出什麼異常? –

+0

動作中沒有例外 - 動作中的代碼按預期運行。 錯誤函數中的異常對象爲null。 – Marius

+0

你得到了什麼HTTP響應代碼?如果您不知道如何檢查,請嘗試使用Firebug for Firefox或Chrome中的開發者工具。 –

回答

0

您不妨礙默認的onclick行爲。你可以嘗試以下方法嗎?

onclick="return myFunction()" 
+0

非常感謝!讓我的一天! – Marius