如何将多个参数从 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 控制器的主要内容,如果未能解决你的问题,请参考以下文章