【问题标题】:Save data from GET request as variable将 GET 请求中的数据保存为变量
【发布时间】:2019-08-17 04:51:12
【问题描述】:

我有一个使用 Azure directline 3.0 的简单 axios GET 请求。 GET 请求拉回数据并在控制台中显示(如图所示)。 我要保存到变量中的数据是conversationId。然后我想在另一个 JS 文件中将此变量与 Axios Post 一起使用,以作为链接的一部分发布,例如let URL = "https://directline.botframework.com/v3/directline/conversations/"+convID"/activities"convID 是我希望创建的变量。现在我正在用新的对话 ID 手动更改 convID,但我想创建一个变量,以便我可以将它放在 post javascript 文件中,以便它是自动的。enter image description here

【问题讨论】:

  • 是的,但我不知道该怎么做,这就是我要问的
  • 如果发生回发或导致您的 scipt 文件重新加载的某种其他类型的导航会发生什么,这种方法将不起作用,但如果您将此值存储在浏览器会话存储容器中,您可以从那里拉出来 (developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage)

标签: javascript node.js http get axios


【解决方案1】:

有多种方法可以解决这个问题。最简单的方法是在共享对象window.convID = convID 上公开数据,然后在需要的地方访问它。 您还可以创建 singleton 对象,它只能被实例化一次,因此将在应用程序的整个生命周期内共享它的变量。

axios.get(/* URL */).then(res => {
  window.convID = res.data.conversationId;
});

【讨论】:

  • 好的,但是如何从 GET 请求中获取对话 ID 并保存?
  • 如何在另一个 javascript 文件中调用它?我尝试使用“警报(convID.back);”但它不会在 POST 文件中提取它?
  • post文件中,可以使用window.convID获取
【解决方案2】:

您可以将该变量值保存在 LocalStorage 中。像这样的:

let routeToYourApi = '/api/conversations'; // or something like this...
axios.get(routeToYourApi).then((response) => {
    let conversationId = response.data.conversationId; // not sure if data object from your image is directly nested inside response that you get from server, but you get the idea...
    window.localStorage.setItem("convId", conversationId);
}) // here you can fetch your conversation id

您可以在应用程序的任何位置访问它:

let conversationId = window.localStorage.getItem("convId");

...并最终将其从本地存储中删除:

window.localStorage.removeItem("convId")

希望对您有所帮助!

【讨论】:

  • 如何从 javascript 控制台获取对话 ID 以将其放置在那里?
猜你喜欢
  • 2020-05-19
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
  • 2019-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多