最近在与后端进入接口调试的时候,有遇见参数非必传的情况(即若有值则传入,否则不传)。刚开始的思路是传了一个空值(null ),但是null在前端是空值,传入接口后其就变成了一个字符串,故此会发生一系列的错误。接口正常却查不到数据,这样子多半是传参问题,最后检查将问题定位到了参数为空这儿。理想传参方式:若是参数有值则将其传入,否则省略(ps:仅限于这些参数不是必传的情况下)。
思路:将参数放入对象里,然后循环此对象,若值不为空,则将其放入新建的对象里,最后将其传入接口。
案列展示
1、接口如图
2、传参格式
var ajaxData = {
"planInstallName":planInstallName,
"compRoomAreaId":compRoomAreaId,
"compRoomDeptId":compRoomDeptId,
"compRoomNumId":compRoomNumId
}
// 新建对象,用于存储符合条件的参数
var dataObj = {}
for(var key in ajaxData){
if(ajaxData[key] != null){
dataObj[key] = ajaxData[key];
}
}
$.ajax({
url:"/****/**/****/astinstall/util/queryInstallPlan?pageStr="+pagenumber+"&sizeStr="+10,
type:"post",
data:dataObj,
success:function(res){
console.log(res)
}
})
只要思想不滑坡,方法总比困难多。(解决途径不应该只有这一条,欢迎指点)