繁体   English   中英

从javascript网页获取设备ip地址时出现问题

[英]issue in getting device ip address from a javascript webpage

我的网页中有以下JavaScript代码:

const configDefault = {

  Bot: {
    // initial sessionAttributes
    sessionAttributes: {},

  },

};

现在,我想用用户在其上打开此网页的设备的ip address设置sessionAttributes 基于此SO帖子,我编写了此代码以获取设备的ip address ,但是我首先sessionAttributes返回的json对象中提取ip address ,然后将其集成,以便将上面代码中的sessionAttributes设置为ip address

function myIP() {
    $.getJSON('//freegeoip.net/json/?callback=?', function(data) {
  JSON.stringify(data, null, 2));
});
}

上面代码中的json对象返回以下示例结构。 我想从中获取ip字段并将其设置为顶部代码中的sessionAttributes

{
  "ip": "116.12.250.1",
  "country_code": "SG",
  "country_name": "Singapore",
  "region_code": "01",
  "region_name": "Central Singapore Community Development Council",
  "city": "Singapore",
  "zip_code": "",
  "time_zone": "Asia/Singapore",
  "latitude": 1.2931,
  "longitude": 103.8558,
  "metro_code": 0
}

我是JavaScript的新手,所以找不到解决方法。 谁能帮助我以正确的方式进行结构设计?

更新:我当前的代码在http://js.do/code/158408 我在运行$符号时遇到错误

const configDefault = {

      Bot: {
        // initial sessionAttributes
        sessionAttributes: {},

      },

    };

function myIP() {
        $.getJSON('//freegeoip.net/json/?callback=?', function(data) {
      return JSON.parse(data);
    });
    }

const ipInformation = myIP();
configDefault.Bot.sessionAttributes.ip = ipipInformation.ip;

您应该使用JSON.parse而不是stringify。

const ipInformation = JSON.parse(data);

console.log(ipInformation.ip);

const configDefault = {
  Bot: {
    // initial sessionAttributes
    sessionAttributes: {},
  },
};

configDefault.Bot.sessionAttributes.ip = ipipInformation.ip;

console.log(configDefault);

或者如果您想在sessionAttributes中使用所有ipInformation。

configDefault.Bot.sessionAttributes = ipipInformation;

由于$ .getJSON是异步的,因此您需要在回调中完成所有工作:

let configDefault = {
  Bot: {
    // initial sessionAttributes
    sessionAttributes: {}
  }
};

function myIP(configDefault) {
  $.getJSON("//freegeoip.net/json/?callback=?", function(data) {
    const ipInformation = JSON.parse(data);
    configDefault.Bot.sessionAttributes.ip = ipInformation.ip;
    console.log(configDefault);
    return configDefault;
  });
}

configDefault = myIP(configDefault );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM