2010-09-22 23 views
1

現在在我$.ajax({ ..});電話,我有以下選項:JQuery的,讓AJAX選項動態

data: { param0: param0, param1: param1} 

說我想要的參數的數量由動態(基於傳遞給函數的變量,其中阿賈克斯打電話)。如何爲data:提供一組動態參數?我想我需要以某種方式提前構造一個對象(?)(即在ajax調用之前),然後將此對象傳遞給data: ..但我不確定如何執行此操作。

通過傳遞變量,我的意思是,這將被用作GET PARAMS可選參數:參數2和參數3,如果他們在傳遞這樣:

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

所以取決於如果參數2和參數3中傳遞(無,或兩者都有效)我需要相應構建的數據對象。

回答

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)將無法​​正常工作....你必須使用一個for循環。

要檢查通過了多少個參數,只需查看arguments.length

+0

這太棒了,但是很多框架(我知道ASP.Net)在使用JSON參數的數組時遇到問題,您最好傳遞一個具有數組屬性的對象。當然,陣列是有效的JSON,我知道,但在實踐中,處理起來更麻煩。 – sworoc 2010-09-22 19:59:26

+0

@sworoc - 然後只需將數組添加到對象。 – 2010-09-22 20:15:38

+0

這就是我在第一句話結尾所說的,很高興我們同意! :) – sworoc 2010-09-22 20:45:23