我正在尝试创建搜索功能,但是当我尝试通过params
请求将数据(axios.get
)传递到后端时,它显示为undefined
。 / p>
我的应用程序请求处理功能:
handleSearch() {
API.search(this.state.searchType, this.state.searchValue)
.then(response => { 1 }).catch(error => console.log(error));
}
就我所知,以上内容似乎工作得很好。这些状态值有效,我确实测试了它们是否为defined
。
我的axios / API功能:
search: function(searT, searV) {
let searchData = {
'searchType': searT,
'searchValue': searV
};
return axios.get('/search', searchData).then(response => 1);
}
根据axios docs
和我发现的所有其他资源,以上内容似乎是正确的。 searT
和searV
值已成功传递到这一点。
后端express
功能:
app.get('/search', function(request, response) {
let {searchType, searchValue} = request.params;
console.log('SearchType: ' + searchType + ' and SearchValue: ' + searchValue); //both return undefined
});
searchType
和searchValue
在undefined
,到底是什么?!
我已经看到很多类似的问题,但是似乎没有一个能帮助我解决这个问题。我想知道这是否与我的server.js
文件有关,但是我的axios.post
请求可以正常工作。
我觉得这将是我弄清楚这周后的事,但是现在它正在杀死我。
多亏了蒙哥马利和react-node,什么解决了这个问题:
return axios.get('/search', { params: searchData }).then(response => 1);
app.get('/search', function(request, response) {
let {searchType, searchValue} = request.query;
});
答案 0 :(得分:2)
只是改变
return axios.get('/search', searchData).then(response => 1);
到
return axios.get('/search', {params:searchData}).then(response => 1);
在服务器端,您应该将request.params
更改为request.query
答案 1 :(得分:1)
searchType
和searchValue
在查询字符串中传递,因此必须使用request.query
访问它们。
如@ react-node所指出,数据也被错误地传递给axios.get
调用。要使用axios.get
正确传递查询字符串参数,它需要看起来像这样:
return axios.get('/search', {
params: searchData
}).then(response => 1);