我试图用ajax调用替换表单submit.行动需要formcollection,我不想创建一个新的模型.所以我需要传递整个表单(就像表单提交),但是通过ajax调用.
我试图序列化和使用Json,但是formcollection是空的.
这是我的动作签名:
我试图序列化和使用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?
解决方法
由于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); } } });
主要变化:
>请求的类型设置为POST(这里不需要,但似乎更自然)>序列化表单而不是JSON字符串作为请求数据> contentType已删除 – 我们不再发送JSON了