2010-04-28 56 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