我已經參與了一個大型Web應用程序,其中有很多通過JSON調用Web服務的函數。例如:JavaScript中的代碼優化JSON調用
/*...*/
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;
}
當你坐在request.params [「paramName」]時,「paramName」與函數中的paramName是一樣的嗎?您知道如何在JS或jQuery中獲取變量的名稱......這可以解決我的問題...謝謝 –
您的意思是'request.params [paramName]',而不是'request.params [「paramName」]'。 –
@MattBall,哎呀,我寫這個很匆忙!我現在編輯了我的答案。 –