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 回答