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

Posted

技术标签:

【中文标题】如何将多个参数从 ajax 调用传递到 MVC 控制器【英文标题】:How to pass Multiple Parameters from ajax call to MVC Controller 【发布时间】:2013-12-10 05:27:17 【问题描述】:

我有如下控制器:

public ActionResult Save(string input, string name) 
    //Some code
    return PartialView();

我需要一个 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) 
    
);

我无法将值传递给 name 参数.. 名称参数中的值变为空..请帮助我.. 提前致谢

【问题讨论】:

jquery Ajax call - data parameters are not being passed to MVC Controller action的可能重复 【参考方案1】:

您正在创建 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)  
);

【讨论】:

我相信默认情况下,表单用POST方法在邮件正文中提交一个URI字符串。【参考方案2】:

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

var dataObject = JSON.stringify(
                    'input': $('#myInput').val(),
                    'name': $('#myName').val(),
                );

现在在 ajax 调用中使用它

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

【讨论】:

【参考方案3】:

我在这个问题的帮助下做到了

jquery get querystring from URL

让我们看看如何 我们将使用这个函数

// Read a page's GET URL variables and return them as an associative array.
function getUrlVars()

    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    
    return vars;

现在只需在 Ajax call 中使用它

"ajax": 
    url: '/Departments/GetAllDepartments/',                     
    type: 'GET',                       
    dataType: 'json',                       
    data: getUrlVars()// here is the tricky part
,

仅此而已,但如果您想知道how to use this functionnot send all the query string parameters 回actual answer

【讨论】:

【参考方案4】:
function final_submit1() 
    var city = $("#city").val();
    var airport = $("#airport").val();

    var vehicle = $("#vehicle").val();

    if(city && airport)
    $.ajax(
        type:"POST",
        cache:false,
        data:"city": city,"airport": airport,
        url:'http://airportLimo/ajax-car-list', 
        success: function (html) 
             console.log(html);
          //$('#add').val('data sent');
          //$('#msg').html(html);
           $('#pprice').html("Price: $"+html);
        
      );

      

【讨论】:

【参考方案5】:
$.ajax(
  type: "POST",
  contentType: "application/json; charset=utf-8",
  url: "ChnagePassword.aspx/AutocompleteSuggestions",
  data: "'searchstring':'" + request.term + "','st':'Arb'",
  dataType: "json",
  success: function (data) 
     response($.map(data.d, function (item) 
         return  value: item 
     ))
  ,
  error: function (result) 
      alert("Error");
  
);

【讨论】:

请添加一些关于如何回答问题并使用正确格式的评论

以上是关于如何将多个参数从 ajax 调用传递到 MVC 控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ajax get 将数据从 View 传递到 Controller 或使用参数在 mvc 中发布

如何使用 Ajax 调用 MVC4 传递两个字符串数组

如何将复杂的键值参数表单视图传递给mvc中的控制器?

如何将 Json 对象从 ajax 传递到 spring mvc 控制器?

mvc 从视图传递到Controller 多个不同的实体类接收如何做呢?

如何将图像文件和表单数据从 Ajax 传递到 MVC 控制器