Javascript vuex商店中具有axios请求的Vuejs:can';我不能提出一个以上的要求,为什么?

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

我正在用vuex和axios构建一些vuejs仪表板,在其他仪表板之间,我一直在为一个相当麻烦的问题而挣扎:似乎我不能提出多个请求!所有后续调用都会失败,并出现以下错误:

正在提取错误。。。SyntaxError:未能对“XMLHttpRequest”执行“setRequestHeader”:“Bearer{the_previous_api_response}的整个内容_”不是有效的HTTP标头字段值

我的商店看起来是这样的:

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问题的第一个暗示是好的。。。看来我得挂上我的回声服务器了。搜索继续!好!!我很高兴能帮助你