我正在使用jquery提交我的表单(ID为“#myForm”),如下所示:
$(document).ready(function() {
$("#my_form").submit(function(event) {
$.ajax(
{
type: "POST",
url: $("#my_form").attr("action"),
contentType: "application/json; charset=utf-8",
data: ("#my_form").serialize(),
success: function(result) {
alert('hi');
},
error: function(req, status, error) {
alert("Sorry! We could not process the form at this time.");
}
}
);
event.preventDefault();
});//end submit for my_form
});//end document ready
如果我查看发布的数据,我会看到以下内容
POST / PageContents / Edit HTTP / 1.1
x-requested-with:XMLHttpRequest
接受语言:en-us
推荐人:[由我编辑]
接受: /
Content-Type:application / json;字符集= UTF-8
Accept-Encoding:gzip,deflate
User-Agent:Mozilla / 4.0(兼容; MSIE 8.0; Windows NT 5.1; Trident / 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152 ;. NET CLR 3.5.30729)
主持人:www.somesite.com:3852
内容长度:142
连接:保持活力
Pragma:no-cache
ID = 1&安培; small_title =欢迎+到!!!&安培; big_title =芝加哥!!!&安培;主体=这里是+ +一些东西+为+的+体!!!&安培;子目= +的为+比萨饼地方+ !!
但是这不会映射到正确的操作,因为Request.Forms集合是空的。
如果我在没有javascript的情况下提交此表单并使用普通HTML,则发布的数据如下所示:
POST / PageContents / Edit HTTP / 1.1
接受:image / gif,image / jpeg,image / pjpeg,image / pjpeg,application / x-shockwave-flash,application / x-ms-application,application / x-ms-xbap,application / vnd.ms-xpsdocument, application / xaml + xml, /
推荐人:[由我编辑]
接受语言:en-us
User-Agent:Mozilla / 4.0(兼容; MSIE 8.0; Windows NT 5.1; Trident / 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152 ;. NET CLR 3.5.30729)
内容类型:application / x-www-form-urlencoded
Accept-Encoding:gzip,deflate
主持人:www.somesite.com:3852
内容长度:164
连接:保持活力
Pragma:no-cache
small_title =欢迎+至%21%21%21安培; big_title =芝加哥%21%21%21安培;子目=的+地方+为+比萨饼%21%21安培;主体=这里是+一些+东西+为+ + body。%21%21%21& id = 1
您可以看到,正确发布的数据,因此我的路由全部正常工作并调用了正确的操作。
我表单中的所有字段确实都有名称属性。
谢谢,并为冗长的帖子道歉。
答案 0 :(得分:4)
我认为问题在于你传递的contentType
。你有:
contentType: "application/json; charset=utf-8",
但是你传递的数据不是json。你最好的办法是删除该行。