84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
我现在要发起动态查询的请求,查询需要九个参数,所以现在需要构建请求的object,现在的问题是这九个参数只有有值得情况下才会构建object中的参数和值,现在我不知道怎么动态构建
只有有值得时候才会添加
认证高级PHP讲师
由于没有办法在函数调用时获取形参列表,因此先构建 paramKeys 用来索引发送请求时的参数名,注意调用 getPostData 时要确保参数个数同 paramKeys.length 相同,如果某个参数不需要传,可以用 '' 代替。
paramKeys
getPostData
paramKeys.length
''
代码如下:
function getPostData(city, deal_time, signe_agency, agency_type...) { var paramKeys = [ 'city', 'deal_time', 'signe_agency', 'agency_type', 'product_type' ], postData = {}; Array.prototype.map.call(arguments, function(param, index) { param && postData[paramKeys[index]] = param; }); return postData; }
首先不建议这样进行传参数,因为你的参数具有不确定性,所以需要对参数是否传入进行判定;如果一不小心漏传了一个参数就会导致参数赋值偏移。所以这类更适合直接传一个对象进来。
这样就可以使用
function getPostData(data) { var result = {}; Object.keys(data).forEach(function(item){ if(data[item] !== undefined) result[item] = data[item]; }) return result; }
var params = {}; if(!!!参数1.val){params.参数1 = 参数1.val} ...
例:
var params = {}; if(!!!city){params.city = city} ... $.ajax({url: url,data: params, success: function(rs){console.log(rs)}});
由于没有办法在函数调用时获取形参列表,因此先构建
paramKeys
用来索引发送请求时的参数名,注意调用getPostData
时要确保参数个数同paramKeys.length
相同,如果某个参数不需要传,可以用''
代替。代码如下:
首先不建议这样进行传参数,因为你的参数具有不确定性,所以需要对参数是否传入进行判定;如果一不小心漏传了一个参数就会导致参数赋值偏移。所以这类更适合直接传一个对象进来。
这样就可以使用
例: