在ASP.NET MVC中使用jQuery调用Ajax不传递参数

des*_*ati 3 parameters ajax asp.net-mvc jquery

路线是:

routes.MapRoute(
    "Ajax", // Route name
    "BizTalk/Services/{action}", // URL with parameters
    new
    { // Parameter defaults
     controller = "BizTalk"
    }
   );
Run Code Online (Sandbox Code Playgroud)

我的控制器是:

public JsonResult AjaxTest(string s, int i, bool b)
  {
   return Json("S: " + s + "," + "I: " + i + "," + "B: " + b);
  }
Run Code Online (Sandbox Code Playgroud)

我的jQuery代码:

$(document).ready(function() {
   $("#btn_test").click(function() {
    var s = "test";
    var i = 8;
    var b = true;
    $.ajax({
     type: "POST", cache: false,
     url: "/BizTalk/Services/AjaxTest",
     data: { i: i, s: s, b: b },
     contentType: "application/json; charset=utf-8",
     dataType: "json",
     success: function(msg) {
     }
    });
   });
  });
Run Code Online (Sandbox Code Playgroud)

Sim*_*Fox 7

这篇文章解释了问题和可能的解决方案(类似于@Erv的解释).

如果您contentType: "application/json; charset=utf-8"从调用中删除jQuery.ajax默认内容类型(form-urlencoded)将被使用,并且您指定为数据参数(data: { i: i, s: s, b: b })的json数据将正确映射到您的操作参数....所以除非您真的想要发送json数据只是删除contentType,你会没事的.....