Ajax数据没有进入控制器?为什么?

时间:2013-12-14 13:55:30

标签: javascript jquery ajax serialization controller

我正在使用mvc4应用程序。我使用.cshtml文件开发了一个表单,该文件继承了模型并具有相应的控制器操作。 我正在使用ajax jquery提交表单,

          var body=$('#formId').serialize();
          $.ajax({
                url: submitAction,
                type: "POST",
                datatype: "json",
                data: body,
               success: function (data) {
               if (data != null) {
                 alert("success");
               }
               });

“body”很好,它有序列化的数据,而submitAction是var,它保存我的控制器动作,并且控件被转移到那里。

编辑:

我的控制器看起来像,

    public JsonResult(ParentModel model) /*here model always hold null values, WHY??*/
    {
    //stmts..
    return Json(new {success=true}, JsonRequestBehaviour.AllowGet);
    }

但是,我的控制器动作的参数显示为空值。有人能说出错误是什么,我该如何解决?

1 个答案:

答案 0 :(得分:1)

   $.ajax({
     url: submitAction,
     type: "POST", <-- you make post, but asp.net mvc controller receives default GET request
    data: { model: body},

[HttpPost]
public JsonResult(string model) //<--now you pass string and to Deserialize in ParentModel 
 {
   JavaScriptSerializer jss= new JavaScriptSerializer();
   ParentModel pmodel = jss.Deserialize<ParentModel >(model); 

   return Json(new {success=true}, JsonRequestBehaviour.AllowGet);
 }

尝试在您的请求中修改data:部分, 删除数据类型:“json”

将类型model参数编辑为字符串