5

$.ajax 'POST'リクエストが完全なポストバック (ページ全体の更新)を引き起こす原因を誰か教えてもらえますか?

ASP.NET MVCコンテキストで $.ajax 'POST' を使用しています。ここで、ビューは $.ajax 'POST' 要求を通じてコン​​トローラー メソッド (JSON 結果を返す) を呼び出しています。

コードは以下です。


// View.
<button id="save" onclick="saveClick()" />

// View.
<script type="text/javascript">

    function saveClick() {
        if (!$("form").valid()) {
            return false;
        }

        $.ajax({
            url: '@Url.Action(@MVC.Ticket.ActionNames.SaveTicket, @MVC.Ticket.Name)'
            type: 'POST',
            data: JSON.stringify(getJsonTicket()),
            dataType: 'json',
            contentType: "application/json",
            cache: false,
            success: function(data) {
                alert(data.SaveResult);
            }
        });

        return true;
    }

    function getJsonTicket() {
        ...
    }

</script>

// Controller action.
public virtual JsonResult SaveTicket(Ticket newTicket)
{
    try
    {
        TicketManager.SaveTicket(newTicket);
        return Json(new CreateTicketViewModel {SaveResult = "success"});
    }
    catch
    {
        return Json(new CreateTicketViewModel { SaveResult = "error" });
    }
}
4

3 に答える 3

11

行う

<button id="save" type="button" onclick="saveClick()" />

このボタンでフォームが投稿されないようにします。

説明:

ボタン要素の type 属性のデフォルト値は「submit」です。

https://stackoverflow.com/a/3315016/1014281

于 2013-01-10T09:04:30.507 に答える
3

<button>a and notを使用していることは確かです<input type="submit">か? ボタンが送信されないようにしないと、フォームが送信されるためです (完全なポストバック)。

<input type="submit" onclick="return saveClick()">saveClick()常にfalseを返す限り機能するはずです。

于 2013-01-10T09:10:03.290 に答える