1

モーダル ポップアップに表示する部分ビュー (フォーム) があります。送信すると、データベースに新しいエントリが作成されます。これは、ajax 呼び出しを介して行う必要があります。ajax呼び出しですべてのフォームフィールドを渡すにはどうすればよいですか? MVC4を使用しています。

$('form').serialize() を試しましたが、無効な JSON プリミティブというエラーが発生します。私は何を間違っていますか?

var dataToSend = $('form').serialize();
    $.ajax({
        url: urlForSaving,
        data: dataToSend,
        cache: false,
        type: 'POST',
        dataType: 'json',
        contentType: "application/json;charset=utf-8",
        success: function (data, status) {
        },
        error: function (xhr, ajaxOptions, thrownError) { alert('error') }
    });

コントローラ

 [HttpPost]
    public JsonResult Add(SomeModel model)
    {
        if (ModelState.IsValid)
        {
            RedirectToAction("Index");
        }

        return Json(new { 
        Success = false,
        Message = "Validation Errors"
        });
    }
4

2 に答える 2

1

以下のようにフィールド値をオブジェクトに追加し、そのオブジェクトを必要なイベントで呼び出される関数に渡す必要があります。

 var dataToSend = {
                    fieldname: $("FIELDCLASS OR ID").val();
                  };

  function tocall(){
       $.ajax({
                 url: urlForSaving,
                 data: JSON.stringify(obj:dataToSend),
                 cache: false,
                 type: 'POST',
                 dataType: 'json',
                 contentType: "application/json;charset=utf-8",
                 success: function (data, status) {
             },
                 error: function (xhr, ajaxOptions, thrownError) { alert('error') }
             });
                   };
于 2012-12-10T18:58:35.713 に答える
1

MVC3 以降では、Ajax.BeginForm を (Http.BeginForm と同様に) 部分ビューで使用するのが理想的な状況だと思います。Ajax バージョンでは、ajax を介したフォームの投稿を含め、すべてが自動的に接続されます。

MSDN Ajax.BeginForm

于 2013-03-17T10:19:49.793 に答える