2015-10-16 91 views
0

我使用ajax的職位並通過JSON對象作爲參數傳遞給一個MVC控制器,複雜的參數語法阿賈克斯通過

我發現一切正常,如果我叫AJAX這樣

vm.updateRoom = function(ctx){ 
    var test = ko.toJSON(ctx); 
     return $.ajax(
       { 
        type: "POST", 
        contentType: 'application/json; charset=utf-8', 
        url: 'myUrl', 
        data: test 
       }).success(function (data) { 
        //... 
       }).fail(function (xhr,error,status) { 
        //... 
     }); 
    } 

但呼叫失敗這樣

vm.updateRoom= function(ctx){ 
    var test = ko.toJSON(ctx); 

    if(validator1 && validator2 && validator3 && validator4){ 
     return $.ajax(
       { 
        type: "POST", 
        contentType: 'application/json; charset=utf-8', 
        url: 'myurl', 
        data: { room: test } 
       }).success(function (data) { 
         //... 
       }).fail(function (xhr,error,status) { 
         //.. 
     }); 
    } 
}; 

我examinated的XHR內容和在第一情況1A JSON對象,在第二種情況下是%7B%22Id%22%3A%221%22%2C%2 ..串。 控制器期望一個複雜的對象作爲參數。

我該如何設法傳遞一個json對象的第二個語法?

+0

可以u顯示要打電話給你的控制器動作的代碼? – F11

回答

0
vm.updateRoom= function(ctx){ 
    var test = ko.toJSON({room:ctx}); //some js variable 

    if(validator1 && validator2 && validator3 && validator4){ 
     return $.ajax(
       { 
        type: "POST", 
        contentType: 'application/json; charset=utf-8', 
        url: 'room/update', 
        data: test 
       }).success(function (data) { 
         //... 
       }).fail(function (xhr,error,status) { 
         //.. 
     }); 
    } 
}; 

因爲我這裏補充一個樣品控制器動作片段完整性......

public class RoomController : Controller 
    { 
     ... 
     [HttpPost] 
     public ActionResult Update(Room room) 
     { 
      ... 
     } 
    } 
+0

編輯的問題 – Stuntman

+0

這兩種語法是否使用相同的動作(在你的情況myurl相同的網址)? –

+0

bro第一個語法是完全正確的,問題是我必須傳遞第二個參數到動作,所以我需要第二個參數 – Stuntman