Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery使ajax选项动态化_Javascript_Ajax - Fatal编程技术网

Javascript JQuery使ajax选项动态化

Javascript JQuery使ajax选项动态化,javascript,ajax,Javascript,Ajax,现在在我的$.ajax({..})中呼叫我有以下选项: data: { param0: param0, param1: param1} 假设我希望参数的数量是动态的(基于传递给进行ajax调用的函数的变量)。如何提供数据:一组动态参数?我认为我需要提前(即在ajax调用之前)以某种方式构造一个对象(?),然后将该对象传递给数据:。但我不确定如何做到这一点 通过传入变量,我指的是可选参数,如果传入,将用作GET参数:param2和param3。因此: function myAjaxCall(pa

现在在我的
$.ajax({..})中呼叫我有以下选项:

data: { param0: param0, param1: param1}
假设我希望参数的数量是动态的(基于传递给进行ajax调用的函数的变量)。如何提供
数据:
一组动态参数?我认为我需要提前(即在ajax调用之前)以某种方式构造一个对象(?),然后将该对象传递给
数据:
。但我不确定如何做到这一点

通过传入变量,我指的是可选参数,如果传入,将用作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(无或两者都有效),我需要相应地构造数据对象。

如您所述,您需要使用参数生成对象并将其作为数据传递:

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

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

您应该使用自动创建的

function myAjaxCall() {
 $.ajax({
   data: arguments, // "arguments" is an Array Object created automatically by JS
   ...
 });
}
myAjaxCall({ fruit: "apple"}, "blah", 500, true);
或者,如果希望它是以arguments数组作为属性的对象文字:

function myAjaxCall() {
 $.ajax({
   data: {args: arguments}, // "arguments" is an Array Object 
    ...                     //   created automatically by JS
 });
}
您可以使用任意数量的参数调用它,并且

function myAjaxCall() {
 $.ajax({
   data: arguments, // "arguments" is an Array Object created automatically by JS
   ...
 });
}
myAjaxCall({ fruit: "apple"}, "blah", 500, true);
请注意,
arguments
是只读的,因此如果要使用它,必须复制它,
arguments.splice(0)
将不起作用。。。。您必须使用for循环


要检查传入了多少个参数,只需查看
arguments.length

这很好,但许多框架(我知道ASP.Net)在JSON参数数组方面存在问题,最好传递一个具有数组属性的对象。诚然,我知道数组是有效的JSON,但实际上处理起来要痛苦得多。@sworoc-然后只需将数组添加到一个对象中。这就是我在第一句话末尾所说的,很高兴我们同意!)@sworoc-编辑后也包含该表格。