JQuery делает параметры ajax динамическими - PullRequest
1 голос
/ 22 сентября 2010

прямо сейчас в моем $.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 ]

1 голос
/ 22 сентября 2010

Вы должны использовать автоматически созданный массив arguments .

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

или, если хотите, чтобы он был литералом объекта смассив аргументов как свойство:

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

Вы можете вызывать это с любым количеством параметров, и параметры могут быть любой формы данных .

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

Обратите внимание, что arguments только для чтения, поэтому, если вы хотите работать с ним, вы должны скопировать его, и arguments.splice(0) не будет работать .... вы должны использовать цикл for.

Чтобы проверить, сколько аргументов было передано, просто посмотрите на arguments.length.

1 голос
/ 22 сентября 2010

Как вы упомянули, вам нужно сделать объект из ваших параметров и передать его как данные:

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

$.ajax({
    ...
    data: mydata,
    ...
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...