2010-04-28 70 views
1

我創建一個用戶控件,這是一個控制客戶端,它有一個JavaScript文件attatched它。這個控件有一個按鈕,當點擊一個彈出窗口時,這個彈出窗口會顯示我的域實體列表。我的實體是通過調用web服務來獲取的。

我試圖讓這個彈出的usercontrol在所有的實體上工作,因此我需要調用任何需要的web服務(例如每個實體一個)使用相同的$ .ajax()調用。

我有我的usercontrol中的webservice url的hiddenfields,您通過屬性在標記中指定。到現在爲止還挺好。當我需要一些額外的參數到webservice(頁面大小和pageindex除外)時出現問題。比如說,一個webservice接受一個額外的參數「Date」。

目前,我有我的參數設置如下:

var params = JSON.stringify({ 
     pageSize: _this.pageSize, 
     pageIndex: _this.pageIndex    
    }); 

,然後我調用web服務,像這樣:

$.ajax({ 
    webserviceUrl, 
    params, 
    function(result) { 
      //some logic 
    }); 
}); 

我想要做的是能夠增加我的額外參數(日期)需要時「參數」,這些參數的規格將通過usercontrol的屬性完成。

因此,底線,我有一組默認參數,並希望動態添加可選的額外參數。

這怎麼可能?

在此先感謝。

回答

1

我知道它不會那麼快,但類似

var params; 
function buildJsonParams(defaultParam1, defaultParam2, optionalParam1, ...) 
{ 
    string pString = "params = JSON.stringify({ pageSize: _this.pageSize, pageIndex: _this.pageIndex"; 
    if (optionalParam1 != undefined) 
    { 
    pString += ",yourOptionParam: optionalParam1"; 
    } 
    pString += "});"; 
    eval(pString); 
} 

,或者如果你不提前知道了可選的參數是什麼你可以使用並行數組,其中一個是變量,另一個是參數名稱,並將它們傳遞給buildJSONParams類似的函數,以執行相同類型的事情,只通過傳入的兩個數組循環。

+0

謝謝,這幫助了很多! – Andreas 2010-04-30 10:39:05

0

這樣的事情應該工作

var params = getDefaultParams(); 
// some condition to determine if extra needed? 
params.specialDate = getSpecialDateParam(); 
// could also be written as params['specialDate'] = getSpecialDateParam(); 

$.ajax({ 
    webserviceUrl, 
    JSON.stringify(params), 
    function(result) { 
      //some logic 
    }); 
}); 


// **************************** 
function getDefaultParams() { 
    return { 
     pageSize: _this.pageSize, 
     pageIndex: _this.pageIndex   
    }; 
} 
+0

謝謝,這會工作,如果我知道所有的參數,謝謝! – Andreas 2010-04-30 10:39:49