2014-04-08 28 views
0

我無法讓我的JSON到我的控制器,我無法弄清楚爲什麼我得到的值沒有被傳遞給控制器​​。這裏是我的ajax後在我的javascript:JSON傳遞給控制器​​沒有價值

this.save = function() { 
     var data = ko.toJSON(this.Routines); 
     $.ajax({ 
      type: 'POST', 
      url: "CreateJson", 
      data: data, 
      contentType: 'application/json; charset=utf-8', 
      dataType: 'json', 
      success: function (result) { 
       if (!result.success) 
        alert("test") 
       else { } 
      } 
     }) 
    } 

現在數據包含

[{"routine_name":"new routine","duration":"20","rest":"10","rounds":1}] 

這是我想要的,但是控制器顯示什麼。這裏是我的控制器

[HttpPost] 
    public JsonResult CreateJson(t_routine routine, string data) 
    { 

     var message = "success"; 
     return Json(message); 
    } 

據我瞭解,MVC 3+自動接收JSON無需任何參數,如我的字符串數據,我只是把它扔在那裏,試圖弄清楚,如果我在得到任何東西所有。數據爲空,並且例程顯示0和空的值。我錯過了什麼?

+0

您是否驗證ied它是否打到正確的URL?當請求被觸發時,螢火蟲在網絡中向您展示什麼?也許嘗試/的URL的前綴 – Jeremy

回答

0

如果t_routine代表

[{"routine_name":"new routine","duration":"20","rest":"10","rounds":1}] 

服務器端的類型然後它可能是足以稱之爲JSON.stringifyko.toJSON結果這樣

this.save = function() { 
    var data = JSON.stringify(ko.toJSON(this.Routines)); 
    $.ajax({ 
     type: 'POST', 
     url: "CreateJson", 
     data: data, 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     success: function (result) { 
      if (!result.success) 
       alert("test") 
      else { } 
     } 
    }) 
} 

不需要在你的控制器操作的數據參數那麼您很可能需要將t_routine參數更改爲t_routine[]

+0

似乎我需要的是我的模型參數上的[]。 JSON.stringify導致參數爲空,但使用默認的ko.toJSON我得到了我需要的控制器。在將我的頭撞到牆上一陣子之後,問題解決了,並且也提示了。非常感激... – Parker3306