小编典典

如何使用对动作的ajax调用传递表单收集?

ajax

我正在尝试用ajax调用替换表单提交。该动作需要formcollection,我不想创建一个新的Model。所以我需要通过ajax调用来传递整个表单(就像表单提交一样)。我尝试序列化并使用Json,但formcollection为空。这是我的动作签名:

public ActionResult CompleteRegisteration(FormCollection formCollection)

这是我的提交按钮,单击:

var form = $("#onlineform").serialize();              
            $.ajax({
                url: "/Register/CompleteRegisteration",                
                datatype: 'json',
                data: JSON.stringify(form),
                contentType: "application/json; charset=utf-8",                
                success: function (data) {
                    if (data.result == "Error") {
                        alert(data.message);
                    }
                }
            });

现在如何将数据传递到formcollection中?


阅读 184

收藏
2020-07-26

共1个答案

小编典典

由于FormCollection存在许多键值对,因此JSON对于其表示而言是不合适的数据格式。您应该只使用序列化的表单字符串:

var form = $("#onlineform").serialize();
$.ajax({
    type: 'POST',
    url: "/Register/CompleteRegisteration",
    data: form,
    dataType: 'json',
    success: function (data) {
        if (data.result == "Error") {
            alert(data.message);
        }
    }
});

关键更改:

  1. *设置为POST的请求的 *类型 (这里没有必要,但看起来更自然)
  2. 序列化形式而不是JSON字符串作为请求 数据
  3. contentType 已删除-我们不再发送JSON
2020-07-26