我参与了一个大型 Web 应用程序,其中有很多通过 JSON 调用 Web 服务的函数。例如:
/*...*/
refreshClientBoxes: function(customerNr) {
var request = {};
request.method = "getClientBoxes";
request.params = {};
request.params.customerNr = customerNr;
request.id = Math.floor(Math.random() * 101);
postObject(jsonURL, JSON.stringify(request), successClientBoxes);
},
/*...*/
其中“postObject”是一个接收 URL、数据和回调的函数。
如您所见,我必须在每个方法中构造这段代码:
var request = {};
request.method = "getClientBoxes";
request.params = {};
request.params.customerNr = customerNr;
request.id = Math.floor(Math.random() * 101);
改变的是我们将调用的方法的名称以及我们想要传递的参数的名称和值。
所以我想知道是否有一种方法可以避免这种工作,方法是接收我们将调用的方法的名称和参数数组,并使用某种反射构造请求参数并返回字符串化的请求。
对于 WS,我使用了 php + zend 1.12,JS 中的 MVC 框架,其 ember 0.95 和 jQuery。
编辑1:所以感谢大家的回答。我想要的是一种可以给我传递给函数的参数名称或传递的变量名称的方法。像这样的东西:
var contructRequest = function (methodName, paramList) {
var request = {};
request.method = methodName;
request.params = {};
for(var i = 0; i < paramlist; i++){
/*some how get the paramName through reflection...so if i give a variable called customerNr this "for" add this new parameter to list of parameters like request.params.customerNr = customerNr whatever the variable name is or its value*/
}
request.params[paramName] = paramValue;
request.id = Math.floor(Math.random() * 101);
return request;
}