84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
我现在要发起动态查询的请求,查询需要九个参数,所以现在需要构建请求的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
相同,如果某个参数不需要传,可以用''
代替。代码如下:
首先不建议这样进行传参数,因为你的参数具有不确定性,所以需要对参数是否传入进行判定;如果一不小心漏传了一个参数就会导致参数赋值偏移。所以这类更适合直接传一个对象进来。
这样就可以使用
例: