Javascript vuex商店中具有axios请求的Vuejs:can';我不能提出一个以上的要求,为什么?
我正在用vuex和axios构建一些vuejs仪表板,在其他仪表板之间,我一直在为一个相当麻烦的问题而挣扎:似乎我不能提出多个请求!所有后续调用都会失败,并出现以下错误: 正在提取错误。。。SyntaxError:未能对“XMLHttpRequest”执行“setRequestHeader”:“Bearer{the_previous_api_response}的整个内容_”不是有效的HTTP标头字段值 我的商店看起来是这样的:Javascript vuex商店中具有axios请求的Vuejs:can';我不能提出一个以上的要求,为什么?,javascript,vuejs2,axios,vuex,Javascript,Vuejs2,Axios,Vuex,我正在用vuex和axios构建一些vuejs仪表板,在其他仪表板之间,我一直在为一个相当麻烦的问题而挣扎:似乎我不能提出多个请求!所有后续调用都会失败,并出现以下错误: 正在提取错误。。。SyntaxError:未能对“XMLHttpRequest”执行“setRequestHeader”:“Bearer{the_previous_api_response}的整个内容_”不是有效的HTTP标头字段值 我的商店看起来是这样的: import axios from "axios"; const
import axios from "axios";
const state = {
rawData1: null,
rawData2: null
};
const actions = {
FETCH_DATA1: ({ commit }) =>
{
if (!state.rawData1)
return axios.get("/api/data1")
.then((response) =>
{
commit("SET_RAW_DATA1", response.data);
});
},
FETCH_DATA2: ({ commit }) =>
{
if (!state.rawData2)
return axios.get("/api/data2")
.then((response) =>
{
commit("SET_RAW_DATA2", response.data);
});
}
};
const mutations = {
SET_RAW_DATA1: (state, data) =>
{
state.rawData1 = data;
},
SET_RAW_DATA2: (state, data) =>
{
state.rawData2 = data;
}
};
export default
{
namespaced: true,
state,
actions,
mutations
};
我不认为我的API有任何问题,因为通过Postman,一切看起来都很顺利
也许这对某些人来说是显而易见的,但我无法发现到底是怎么回事,因为我仍然是一个非常愚蠢的人
哦,我是这样处理axios承诺的,如果有兴趣的话:
this.$store.dispatch("api/FETCH_DATA1").then(() =>
{
// parsing this.$store.state.api.rawData1 with babyparse
}).catch((err) =>
{
this.errorMsg = "Fetching error... " + err;
});
在@wajisan answer之后,它似乎确实适用于“传统”调用,但不适用于获取文件调用。我用我的Echo api尝试了一些东西,但没有用。。。更多详情请点击:
有什么好主意吗,亲爱的?:)
您的代码似乎非常正确,我认为您的问题来自API。
您应该尝试使用另一个配置,以确保:)好吧,使用axios配置多玩一点,并设法让它工作(最后!)。 我刚刚创建了一个我的商店使用的axios实例,奇怪的头问题消失了!我不太清楚为什么,但似乎是因为在我两次调用之间默认的axios配置中发生了一些事情 即使变化不大,新的门店代码:
import axios from "axios";
const state = {
rawData1: null,
rawData2: null
};
const api = axios.create({ // Yep, that's the only thing I needed...
baseURL: "/api"
});
const actions = {
FETCH_DATA1: ({ commit }) =>
{
if (!state.rawData1)
return api.get("/data1") // Little change to use the axios instance.
.then((response) =>
{
commit("SET_RAW_DATA1", response.data);
});
},
FETCH_DATA2: ({ commit }) =>
{
if (!state.rawData2)
return api.get("/data2") // And there too. Done. Finished. Peace.
.then((response) =>
{
commit("SET_RAW_DATA2", response.data);
});
}
};
const mutations = {
SET_RAW_DATA1: (state, data) =>
{
state.rawData1 = data;
},
SET_RAW_DATA2: (state, data) =>
{
state.rawData2 = data;
}
};
export default
{
namespaced: true,
state,
actions,
mutations
};
希望这能帮助别人 我刚刚尝试将“/api/xxx”调用替换为对aaannd的一些调用。。。你说得对它确实工作顺利。也许我对CORS问题的第一个暗示是好的。。。看来我得挂上我的回声服务器了。搜索继续!好!!我很高兴能帮助你