有什么更好的方法吗?什么是可选参数的正常情况?
null
或空字符串值发送所有参数正在发送所有值:
var params{
param1: 'demo',
param2: null,
param3: 'demo',
param4: null,
param5: '',
param6: 'demo',
param7: 'demo'
}
$.get(apiURL, params, function(data){
//response
});
仅发送必要的值:
var param2 = {
paramName: 'param2',
value: null
};
var param4 = {
paramName: 'param4',
value: null
};
var param5 = {
paramName: 'param5',
value: ''
};
var params{
param1: 'demo',
param3: 'demo',
param6: 'demo',
param8: 'demo'
};
//adding params if they have a value
var optionalValues = [param2, param4, param5];
optionalValues.forEach(function(optionalParam) {
//not null or empty?
if(optionalParam.value && optionalParam.value.length){
var param = {};
param[optionalParm.paramname] = optionalParam.value;
params.push(param);
}
});
$.get(url, params, function(data){
//response
});
由于API服务可能记录了它获得的所有参数,因此发送不必要的信息似乎会增加日志的大小,甚至在收到不必要的信息时也会使它们更难以阅读。
答案 0 :(得分:1)
好。 JavaScript可以做到这一点。
var params = {
param1: 'demo',
param2: null,
param3: 'demo',
param4: null,
param5: '',
param6: 'demo',
param7: 'demo'
}
for(x in params) { if(params[x] === undefined || params[x] === null || params[x] === '') { delete params [x]; } }
console.log(params);
$.get(url, params, function(data){
//response
});
但我建议使用' lodash'或者' underscore'为了更多的乐趣!
_.pickBy(params) // pick param1, 3, 6 and 7 :)
$.get(url, _.pickBy(params), function(data){
//response
});