0

データをモデルとして html フォームから Controller メソッドに送信しようとしています。ただし、jQuery ajax の投稿がそのような情報をコントローラーに送信する方法がわかりません。フォームを送信したときに実際に発生するエラーは次のとおりです。

リソースが見つかりませんでした... 要求された URL: /OnCallSchedule

アドレスが正しいことはわかっているので、渡されるデータがコントローラー メソッドに渡されるモデルと一致しないと思われます。

[HttpPost]
public JsonResult getSchedule(DateModel dateMod)
{
    ...
    return Json(data);
}

ajax コードは次のとおりです。

$(function () {
    $('form').submit(function () {
        alert('@Url.Action("getSchedule")');
        var date = $('form').serialize();

        var jqxhr = $.post('@Url.Action("getSchedule")', date, function (data) {
            alert("success!");
        })
        .success(function() { alert("second success"); })
        .error(function() { alert("error"); })
        .complete(function() { alert("complete"); });

        jqxhr.complete(function() { alert("second complete"); });
    });
});

メソッドへのパスをリストする最初のアラート ステートメントは、正常にトリガーされます。その後、エラー メッセージが表示され、他のアラートは表示されません。

ほぼすべての戦術を使用してこれを試したことに注意してください。したがって、serialize() コマンドを使用してデータを正しく送信していないと思われます。私は何を間違っていますか?

また、jqxhr アクションを正しく実行していない可能性もあります。わかりやすい例を見つけることができた唯一の場所は、jQuery のドキュメントです。私はもともと次のようなものを使用していました:

$.ajax({
    url: '/OnCallSchedule/getSchedule',
    type: 'POST',
    dataType: 'json',
    data: $('form').serialize(),
    contentType: 'application/json; charset=utf-8',
    success: function(data) {
        $("#dataTable").html(data);
    }
});
4

2 に答える 2

0

return falseフォーム送信イベントハンドラーからする必要があると思います。

$(function () {
    $('form').submit(function () {
        ...
        return false;
    });
});
于 2012-06-28T17:11:41.047 に答える
0

私は自分の問題を理解しました。@Html.BeginFormコントローラーのアクションを自動的に呼び出すMVC スタイルのフォーム (つまり ) を使用しています。私はこの機能をうまく破壊できなかったので、私が書いた ajax コードは無意味でした。私は最終的に ajax 関数を@Html.BeginForm廃止し、完全に を支持し@Ajax.BeginFormました。具体的には:

@using (@Ajax.BeginForm("getSchedule",
                        "OnCallControl", 
                        new AjaxOptions{HttpMethod = "Post",
                                        InsertionMode = InsertionMode.Replace,
                                        UpdateTargetId = "data"}))
{
    ...
}

MVC は、そのフレームワークがサポートしていない機能を常にうまく処理できるとは限らないという難しい方法を学びました。

于 2012-07-02T13:57:19.570 に答える