Jquery .ajax没有在asp.net mvc网站中正确发布数据 - formcollection为空

时间:2009-08-31 16:13:27

标签: jquery

我正在使用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

您可以看到,正确发布的数据,因此我的路由全部正常工作并调用了正确的操作。

我表单中的所有字段确实都有名称属性。

谢谢,并为冗长的帖子道歉。

1 个答案:

答案 0 :(得分:4)

我认为问题在于你传递的contentType。你有:

contentType: "application/json; charset=utf-8",

但是你传递的数据不是json。你最好的办法是删除该行。