2010-09-22 4 views
1

прямо сейчас в моем $.ajax({ ..}); вызова У меня есть следующий вариант:JQuery делает Ajax динамических параметров

data: { param0: param0, param1: param1} 

Say Я хочу, чтобы число параметров, по динамике (на основе переданного переменный в функцию, в которой Аякс вызов сделан). Как предоставить data: динамический набор параметров? Я думаю, мне нужно каким-то образом построить объект (?) Раньше времени (т. Е. Перед вызовом ajax), а затем передать этот объект data: .. но я не уверен, как это сделать.

По переданной переменной, я имею в виду дополнительные параметры, которые будут использоваться в качестве GET Params: 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 передаются в (либо, ни один, либо оба действительны) Мне нужен объект данных, построенный соответственно.

ответ

1

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

var mydata = { 
    name: 'ali', 
    email: '[email protected]', 
    ... 
} 

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

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

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 
}); 
} 

Вы можете назвать это с любым числом параметров, и the parameters can be any data form.

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

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

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

+0

Это замечательно, но у многих фреймворков (я знаю ASP.Net) возникают проблемы с массивами для параметров JSON, вам лучше передать объект со свойством, являющимся массивом. Конечно, массив действителен JSON, я знаю, но на практике гораздо больнее иметь дело. – sworoc

+0

@sworoc - Затем просто добавьте массив к объекту. –

+0

Вот что я сказал в конце своего первого предложения, рад, что мы согласны! :) – sworoc