当我使用jQuery以下列语法发布HTML.Form时:
$.post('<%: Url.Action("ActionName","ControllerName") %>',
$("#FormName").serialize());
对象已正确发布到服务器,但如果我使用:
var reason = encodeURIComponent($("#FormName").serialize());
$.post('<%: Url.Action("ActionName","ControllerName") %>',
{ reason: reason });
序列化对象为null,当我使用encodeURIComponent或没有它时,我得到相同的结果。 我需要向服务器发送更多的参数数据,这就是我想使用第二种方法的原因,但我不能让它正确地发送序列化对象。
答案 0 :(得分:1)
通过在发布数据时将序列化字符串装入[]来工作:
var reason = $("#FormName").serialize();
$.post('<%: Url.Action("ActionName","ControllerName") %>',
{ reason: [reason] });
在使用HTTP Fiddler进行检查时,帖子正文的不同之处在于:
var reason = $("#FormName").serialize();
$.post('<%: Url.Action("ActionName","ControllerName") %>',
{ reason: reason });
body标签包含如下内容:reason = Type = 1&amp; Comments =&amp; ID = 15因此无法区分变量实际持有的内容。通过将其装入[],body标签现在包含:reason%5B%5D = Type%3D1%26Comments%3D%26ID%3D1因此正确编码发布的数据。