2017-06-23 61 views
0

我在網頁上有這樣的JavaScript代碼獲得設備的IP地址:問題從一個JavaScript網頁

const configDefault = { 

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

    }, 

}; 

現在我想是設置sessionAttributes與其上打開該網頁的設備的ip address由用戶。基於this SO post我寫了這個代碼來獲得設備的ip address但我有在第一提取ip address出返回json對象的問題,然後整合這一塊,這樣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; 

回答

1

您應該使用,而不是字符串化JSON.parse。

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); 
+0

我怎麼使用這個設置'sessionAttributes'在我上面的代碼? – user2916886

+0

我已經更新了我的答案。 – mkaatman

+0

所以'const ipInformation = JSON.parse(data);'會在我的帖子中調用'myIP()'函數? – user2916886