JQuery使ajax选项动态化

时间:2010-09-22 19:00:21

标签: javascript ajax

现在我的$.ajax({ ..});电话中我有以下选项:

data: { param0: param0, param1: param1}

假设我希望动态参数的数量(基于传递给进行ajax调用的函数的变量)。如何提供data:一组动态参数?我想我需要以某种方式提前构造一个对象(?)(即在ajax调用之前),然后将此对象传递给data: ..但我不知道该怎么做。

通过传入的变量,我的意思是可选参数,它们将被用作GET参数:param2和param3(如果它们被传入)。所以:

function myAjaxCall(param0, param1, param2, param3) { // param2/3 are optional
  $.ajax({
      //...
      data: { param0: param0, param1: param1} // this will need param2/3 if passed in
      //..
  });
}

因此,取决于是否传入了param2和param3(无论是否,两者都有效)我需要相应地构造数据对象。

2 个答案:

答案 0 :(得分:1)

正如您所提到的,您需要从参数中创建一个对象并将其作为数据传递:

var mydata = {
    name: 'ali',
    email: 'ali@example.com',
    ...
}

$.ajax({
    ...
    data: mydata,
    ...
});

答案 1 :(得分:1)

您应该使用自动创建的 arguments array

function myAjaxCall() {
 $.ajax({
   data: arguments, // "arguments" is an Array Object created automatically by JS
   ...
 });
}

或者,如果您希望它是一个对象文字,并将arguments数组作为属性:

function myAjaxCall() {
 $.ajax({
   data: {args: arguments}, // "arguments" is an Array Object 
    ...                     //   created automatically by JS
 });
}

您可以使用任意数量的参数调用此选项,并 the parameters can be any data form

myAjaxCall({ fruit: "apple"}, "blah", 500, true);

请注意,arguments是只读的,因此如果您想使用它,则必须复制它,而arguments.splice(0)将无效....您必须使用for循环。

要查看传入的参数数量,只需查看arguments.length