Jquery Ajax调用 - 传递多个参数,避免依赖于名称

时间:2014-01-24 09:16:38

标签: asp.net-mvc-4 jquery

在我的asp.net mvc 4应用程序中,我对一个具有以下签名的控制器方法执行ajax调用:

[HttpPost]
public ActionResult DoSomething(string param1, string param2)

目前我的ajax调用正在运行,我知道如何传递多个参数,见下文:

$.ajax({
        url: "/DoSomething/",
        data: { param1: "this is param1", param2: "this is param2" },
        type: 'POST',
        dataType: 'json'
    });

但问题是ajax调用完全依赖于控制器方法的参数名称,我的意思是,当在ajax调用中将参数传递给控制器​​方法时,这些参数的名称必须与控制器签名所以有什么办法可以避免名称依赖?例如,没有在ajax调用中指示参数名称并将它们按顺序放置,因此控制器方法知道传递的第一个参数对应于第一个参数,第二个参数传递给第二个参数,依此类推......

3 个答案:

答案 0 :(得分:2)

你可以传递一个数组

[HttpPost]
public ActionResult DoSomething(string[] param)

$.ajax({
        url: "/DoSomething/",
        data: $.param({ param : ["this is param1","this is param2"] }),
        type: 'POST',
        dataType: 'json'
    });

有关详细信息,请查看此处的文档http://api.jquery.com/jquery.param/

答案 1 :(得分:1)

你试过这个吗? jQuery支持数组作为数据。

$.ajax({
    url: "/DoSomething/",
    data: { params:[ "this is param1", "this is param2" ]},
    type: 'POST',
    dataType: 'json'
});

答案 2 :(得分:1)

如果您尝试以这种方式声明帖子功能会怎么样;

public ActionResult DoSomething(string args[]) 
/* I'm not sure which language you're using on the asp side, 
 * but the default array passed to a function is usually `args`
 */

然后你可以使用所有传递的参数,因为它们在一个数组中,你可以传递任何数量的参数吗?