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

13 浏览
0 Comments

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

我有一个如下所示的控制器:

public ActionResult Save(string input, string name) {
    //一些代码
    return PartialView();
}

我需要一个ajax调用这个控制器方法并传递两个参数input和name

我的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参数。name参数中的值变成了null。

0
0 Comments

问题的出现原因是作者想要通过Ajax调用将多个参数传递给MVC控制器,但不知道如何实现。解决方法是使用一个名为getUrlVars()的函数来获取URL中的查询字符串参数,并将其作为关联数组返回。然后,在Ajax调用中使用这个函数来传递参数。

具体步骤如下:

1. 首先,需要在页面中定义一个名为getUrlVars()的函数,该函数用于获取URL中的查询字符串参数,并将其返回为关联数组。

2. 在Ajax调用中,设置url属性为控制器的路径。

3. 将type属性设置为GET,表示使用GET方法发送请求。

4. 将dataType属性设置为json,表示预期从服务器接收JSON数据。

5. 将data属性设置为getUrlVars(),这样就可以将查询字符串参数作为参数传递给控制器。

这样就完成了通过Ajax调用将多个参数传递给MVC控制器的过程。如果想了解如何使用getUrlVars()函数或者如何不发送所有查询字符串参数到控制器,可以参考提供的链接。

0
0 Comments

问题的原因是:在进行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字符串。

0
0 Comments

问题的出现原因:在ajax调用中,需要将多个参数传递给MVC控制器,但是无法直接在ajax的data属性中传递多个参数。

解决方法:创建一个数据对象,并在ajax调用中使用该对象来传递参数。

具体步骤如下:

1. 在ajax调用之前,创建一个数据对象。可以使用JSON.stringify方法将多个参数封装成一个JSON对象。

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

2. 在ajax调用中使用该数据对象作为data属性的值。

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

通过以上步骤,我们可以将多个参数成功传递给MVC控制器。

0