【问题标题】:How do I get a specific key value from JSON object如何从 JSON 对象中获取特定的键值
【发布时间】:2022-01-21 16:16:35
【问题描述】:

这是我第一次使用任何类型的 API,而且我刚刚开始使用 JS。我想在服务器托管面板中获取服务器的状态,为此我需要登录(API/Core/Login),获取名为 sessionID 的键的值,然后将该值发送到 /API/Core /GetUpdates 以获得响应。当尝试将 sessionID 传递给 GetUpdates 时,它发送 undefined 而不是 sessionID,我猜我在尝试引用键值时做错了。这是我的代码:

var loginurl = "https://proxyforcors.workers.dev/?https://the.panel/API/ADSModule/Servers/83e9181/API/Core/Login";

var loginRequest = new XMLHttpRequest();
loginRequest.open("POST", loginurl);

loginRequest.setRequestHeader("Accept", "text/javascript");
loginRequest.setRequestHeader("Content-Type", "application/json");

loginRequest.onreadystatechange = function() {
  if (loginRequest.readyState === 4) {
    console.log(loginRequest.status);
    console.log(loginRequest.responseText);
  }
};

var logindata = '{"username":"API", "password":"password", "token":"", "rememberMe":"true"}';

loginRequest.send(logindata);

var statusurl = "https://proxyforcors.workers.dev/?https://the.panel/API/ADSModule/Servers/83e9181/API/Core/GetUpdates";

var statusreq = new XMLHttpRequest();
statusreq.open("POST", statusurl);

statusreq.setRequestHeader("Accept", "text/javascript");
statusreq.setRequestHeader("Content-Type", "application/json");

statusreq.onreadystatechange = function() {
  if (statusreq.readyState === 4) {
    console.log(statusreq.status);
    console.log(statusreq.responseText);
  }
};

var statusdata = `{"SESSIONID":"${loginRequest.responseText.sessionID}"}`; // Line I'm having problems with

statusreq.send(statusdata);

console.log(loginRequest.responseText.sessionID)

这是 /API/Core/Login 的响应

{"success":true,"permissions":[],"sessionID":"1d212b7a-a54d-4e91-abde-9e1f7b0e03f2","rememberMeToken":"5df7cf99-15f5-4e01-b804-6e33a65bd6d8","userInfo":{"ID":"034f33ba-3bca-47c7-922a-7a0e7bebd3fd","Username":"API","IsTwoFactorEnabled":false,"Disabled":false,"LastLogin":"\/Date(1639944571884)\/","GravatarHash":"8a5da52ed126447d359e70c05721a8aa","IsLDAPUser":false},"result":10}

任何帮助将不胜感激,我已经坚持了一段时间。

【问题讨论】:

  • 您需要调用JSON.parse()将JSON转换为对象。
  • 你必须把代码放在回调函数中,而不是放在顶层。

标签: javascript json


【解决方案1】:

responseTextJSON 响应的文本表示形式。

要么使用JSON.parse(logindata.responseText)获取JSON数据,要么使用logindata.responseJSON

【讨论】:

  • 我添加了var obj = JSON.parse(loginRequest.responseText);,但我得到了Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>)
  • 通过将最后 3 行放在第一个函数中来修复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-15
  • 2019-06-13
  • 2017-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多