0

MVC3アクションに対してAjaxリクエストを実行していて、成功またはエラー関数でJsonResultを処理したいと思います。現在、動作は奇妙です。アクションでブレークポイントに到達する前に、エラー関数に到達します。誰かが私を助けてくれて、ヒントがありますか?

私の見解:

<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が直接表示され、その場合にのみアクションが呼び出されますが、これは遅すぎます。残念ながら、例外はnullです。その直後にビューが閉じられます。

4

1 に答える 1

0

デフォルトのonclick動作を妨げていません。代わりに次のことを試すことができますか?

onclick="return myFunction()"
于 2012-11-09T15:49:08.293 に答える