2015-10-16 72 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