【问题标题】:How to pass Multiple Parameters from ajax call to MVC Controller如何将多个参数从 ajax 调用传递到 MVC 控制器
【发布时间】: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 asp.net-mvc model-binding


【解决方案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 parametersactual 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");
          }
        });
        

        【讨论】:

        • 请添加一些关于如何回答问题并使用正确格式的评论
        猜你喜欢
        • 2015-04-03
        • 2016-08-14
        • 1970-01-01
        • 1970-01-01
        • 2019-10-30
        • 1970-01-01
        • 2015-12-28
        • 2021-12-05
        • 1970-01-01
        相关资源
        最近更新 更多