我正在创建一个控制客户端的用户控件,它有一个javascript文件附加到它。此控件有一个按钮,单击时会出现一个弹出窗口,此弹出窗口显示我的域实体列表。使用对Web服务的调用来获取我的实体。
我试图让这个弹出用户控件在我的所有实体上运行,因此我需要使用相同的$ .ajax()调用来调用所需的任何web服务(例如,每个实体一个)。
我的usercontrol中有webservice url的隐藏字段,您可以通过属性在标记中指定。到现在为止还挺好。当我需要一些额外的参数到webservice(除了pagesize和pageindex)时,问题就出现了。比如说一个webservice采用额外的参数“Date”。
目前我的参数设置如下:
var params = JSON.stringify({
pageSize: _this.pageSize,
pageIndex: _this.pageIndex
});
然后我像这样调用webservice:
$.ajax({
webserviceUrl,
params,
function(result) {
//some logic
});
});
我想要做的是能够在需要时将我的额外参数(日期)添加到“Param”,这些参数的规范将通过usercontrol的属性来完成。
所以,底线,我有一组默认参数,并希望动态添加可选的额外参数。
这怎么可能?
提前致谢。
答案 0 :(得分: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来做同样的事情它遍历传入的2个数组。
答案 1 :(得分: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
};
}