在Javascript中,如何添加搜索查询以获取请求?

问题描述

我的程序使用慈善数据库API根据用户搜索显示用户慈善组织。目前,我已经进行了设置,以便用户可以通过关键字进行搜索,但是我希望用户可以添加参数来缩小其搜索范围,例如州,城市或等级。我遇到的问题是,如果我包括参数的可能性,而用户将该参数留空,它将无法完成获取请求。

function fetchData(search,state){


     let params = {
        app_id: app_id,app_key: app_key,search: search,state: state,}



    //this program formats the query paramaters
    let searchQuery = formatQueryParams(params)

   
    let searchURL = url + searchQuery;
    

    fetch(searchURL)
    .then(response =>response.json() )
    .then(data => updateDOM(data))
    .catch(err => {
        console.log(`${err.message}`)
      })

} 

在这种情况下,如果用户添加状态,程序将创建错误

解决方法

我通常只添加如果传入的字段,那么如果没有传入,则初始化参数,如果传入,则可以将其添加到参数中。

function fetchData(search,state){


 let params = {
    app_id: app_id,app_key: app_key,search: search,}

// add this for state
if (state) params.state = state;


//this program formats the query paramaters
let searchQuery = formatQueryParams(params)


let searchURL = url + searchQuery;


fetch(searchURL)
.then(response =>response.json() )
.then(data => updateDOM(data))
.catch(err => {
    console.log(`${err.message}`)
  })

}
,

您可以像这样将对象中的必需参数传递给fetchData函数

function fetchData(search,paramsObject)

然后在params对象内部,可以传播之前作为参数传递的paramsObject

let params = {
    app_id: app_id,...paramsObject
}