如何将多个参数从ajax调用传递给MVC控制器

DS *_*mar 20 ajax asp.net-mvc jquery model-binding

我有如下控制器:

public ActionResult Save(string input, string name) {
    //Some code
    return PartialView();
}
Run Code Online (Sandbox Code Playgroud)

我需要对此控制器方法进行ajax调用并传递两个参数input和value

我的ajax调用如下所示:

$.ajax({
    url: '/Home/Save',
    type: 'POST',
    async: false,
    dataType: 'text',
    processData: false,
    data: "input=" + JSON.stringify(data) + "&name =" + $("#name").val(),
    success: function (data) {
    }
});
Run Code Online (Sandbox Code Playgroud)

我无法将值传递给name参数.. name参数中的值变为null ..请帮助我..提前感谢

xdu*_*ine 24

您正在进行HTTP POST,但尝试使用GET查询字符串语法传递参数.在POST中,数据作为命名参数传递,不使用param=value&foo=bar语法.使用jQuery的ajax方法可以创建一个带有命名参数的javascript对象,如下所示:

$.ajax({
  url: '/Home/SaveChart',
  type: 'POST',
  async: false,
  dataType: 'text',
  processData: false,    
  data: { 
      input: JSON.stringify(IVRInstant.data), 
      name: $("#wrkname").val()
  },
  success: function (data) { }
});
Run Code Online (Sandbox Code Playgroud)


Him*_*arg 5

除了 @xdumain 的帖子之外,我更喜欢在 ajax 调用之前创建数据对象,以便您可以调试它。

var dataObject = JSON.stringify({
                    'input': $('#myInput').val(),
                    'name': $('#myName').val(),
                });
Run Code Online (Sandbox Code Playgroud)

现在在ajax调用中使用它

$.ajax({
          url: "/Home/SaveChart",
          type: 'POST',
          async: false,
          dataType: 'json',
          contentType: 'application/json',
          data: dataObject,
          success: function (data) { },
          error: function (xhr) { }            )};
Run Code Online (Sandbox Code Playgroud)