2014-05-22 43 views
1

我想要做的是让用户能够添加新的/删除JQuery选项卡,将有他们的某些模型数据,然后将其保存到数据库。我正在尝试进行ajax调用,以将JSON数据传递给控制器​​,但是当我追踪它时,数据将变为空。从视图传递JSON数据到控制器是空的

enter image description here

查看:

// gloabal variables 
      var tabs; 
. 
. 
. 

tabs = $("#tabs").tabs(); 
. 
. 
. 
    // save tabs to database 
      function SaveTabs() { 
       var d1 = ko.toJSON(this); 
       var associativeArray = { tabs: d1 }; 
       $.ajax({ 
        url: "@Url.Action("SaveTabs")", 
        data: associativeArray, 
       dataType: "json", 
       type: "POST", 
       traditional: true, 
       contentType: "application/json; charset=utf-8",    

      }); 
      }; 

控制器:

public ActionResult SaveTabs(Survey survey, List<TabViewModel> tabs) 
     { 
      //TODO: save to DB 

      //Need to finish it so that we can return real values. 
      return Json(tabs); 
     } 

的D1变量是不是一个调查,我没有办法让调查还没有,我只是希望确保我可以先将数据传递到控制器。所以我假设我需要在控制器的SaveTabs方法中有一个包含选项卡和调查的字典。

+0

的jQuery已经改变了一些,因为我想你”重做最后一次,但我很确定你需要串联'associativeArray';我不相信你可以将原始对象传递给'data'。 –

+0

正如布莱恩提到的,你必须使用'json.tostringify(// required goes here)'。你不能通过Raw。序列化应该完成 –

回答

1

按照从过冷&布赖恩评论,您需要更新Ajax调用添加JSON.stringify,如:

 $.ajax({ 
       url: "@Url.Action("SaveTabs")", 
       data: JSON.stringify(associativeArray), 
      dataType: "json", 
      type: "POST", 
      traditional: true, 
      contentType: "application/json; charset=utf-8",    

     }); 
+0

谢谢,我没有在ajax调用中进行serialize/stringify,但是我看到你是如何做到的,并且它工作正常。 – noobieDev

0

尝试做到这一点:

data: associativeArray.serialize() 
相关问题