Javascript 函数返回对象,但获取';未定义';
我是JS新手,希望创建一个函数来接收给定的IP地址并返回有关它的一些信息Javascript 函数返回对象,但获取';未定义';,javascript,Javascript,我是JS新手,希望创建一个函数来接收给定的IP地址并返回有关它的一些信息 function getDadoIP(IP){ var APIKey = 'key'; var format = 'json'; var url = 'http://api.ipinfodb.com/v3/ip-city/?key=' + APIKey + '&ip=' + IP + '&format=' + format + '&callback=?'; var resposta
function getDadoIP(IP){
var APIKey = 'key';
var format = 'json';
var url = 'http://api.ipinfodb.com/v3/ip-city/?key=' + APIKey + '&ip=' + IP + '&format=' + format + '&callback=?';
var resposta = $.getJSON(url);
resposta.then(function (res) {
var info = '';
for (var chave in res) {
info += res[chave] + ',';
}
console.log(info);
var dado = info.split(/,/);
return {
"codigoStatus": dado[0],
"codigoMensagem": dado[1],
"ipPesquisado": dado[2],
"codigoPais": dado[3],
"pais": dado[4],
"regiao": dado[5],
"cidade": dado[6],
"codigoZip": dado[7],
"latitude": dado[8],
"longitude": dado[9],
"fusoHorario": dado[10]
};
});
}
function setup() {
var dados = getDadoIP('IP-goes-here');
console.log(dados);
}
我能够在函数中获得我想要的信息,因为
console.log(info)
显示了我想要的信息。但是,返回的值是未定义的
,这可以从console.log(dados)
中看出。非常感谢您的帮助。您在getDadoIP
中没有return语句,因此它隐式返回undefined。您需要返回promise对象,然后使用它的。然后
方法访问最终值
function getDadoIP(IP){
var APIKey = 'key';
var format = 'json';
var url = 'http://api.ipinfodb.com/v3/ip-city/?key=' + APIKey + '&ip=' + IP + '&format=' + format + '&callback=?';
var resposta = $.getJSON(url);
//** Added return statement
return resposta.then(function (res) {
var info = '';
for (var chave in res) {
info += res[chave] + ',';
}
console.log(info);
var dado = info.split(/,/);
return {
"codigoStatus": dado[0],
"codigoMensagem": dado[1],
"ipPesquisado": dado[2],
"codigoPais": dado[3],
"pais": dado[4],
"regiao": dado[5],
"cidade": dado[6],
"codigoZip": dado[7],
"latitude": dado[8],
"longitude": dado[9],
"fusoHorario": dado[10]
};
});
}
function setup() {
//** added .then
getDadoIP('IP-goes-here')
.then(function (dados) {
console.log(dados);
});
}
在
getDadoIP
中没有return语句,因此它隐式返回undefined。您需要返回promise对象,然后使用它的。然后
方法访问最终值
function getDadoIP(IP){
var APIKey = 'key';
var format = 'json';
var url = 'http://api.ipinfodb.com/v3/ip-city/?key=' + APIKey + '&ip=' + IP + '&format=' + format + '&callback=?';
var resposta = $.getJSON(url);
//** Added return statement
return resposta.then(function (res) {
var info = '';
for (var chave in res) {
info += res[chave] + ',';
}
console.log(info);
var dado = info.split(/,/);
return {
"codigoStatus": dado[0],
"codigoMensagem": dado[1],
"ipPesquisado": dado[2],
"codigoPais": dado[3],
"pais": dado[4],
"regiao": dado[5],
"cidade": dado[6],
"codigoZip": dado[7],
"latitude": dado[8],
"longitude": dado[9],
"fusoHorario": dado[10]
};
});
}
function setup() {
//** added .then
getDadoIP('IP-goes-here')
.then(function (dados) {
console.log(dados);
});
}
使用异步/等待:
async function getDadoIP(IP){
var APIKey = 'key';
var format = 'json';
var url = 'http://api.ipinfodb.com/v3/ip-city/?key=' + APIKey + '&ip=' + IP + '&format=' + format + '&callback=?';
var res = await $.getJSON(url);
var info = '';
for (var chave in res) {
info += res[chave] + ',';
}
console.log(info);
var dado = info.split(/,/);
return {
"codigoStatus": dado[0],
"codigoMensagem": dado[1],
"ipPesquisado": dado[2],
"codigoPais": dado[3],
"pais": dado[4],
"regiao": dado[5],
"cidade": dado[6],
"codigoZip": dado[7],
"latitude": dado[8],
"longitude": dado[9],
"fusoHorario": dado[10]
};
}
async function setup() {
var dados = await getDadoIP('IP-goes-here');
console.log(dados);
}
使用异步/等待:
async function getDadoIP(IP){
var APIKey = 'key';
var format = 'json';
var url = 'http://api.ipinfodb.com/v3/ip-city/?key=' + APIKey + '&ip=' + IP + '&format=' + format + '&callback=?';
var res = await $.getJSON(url);
var info = '';
for (var chave in res) {
info += res[chave] + ',';
}
console.log(info);
var dado = info.split(/,/);
return {
"codigoStatus": dado[0],
"codigoMensagem": dado[1],
"ipPesquisado": dado[2],
"codigoPais": dado[3],
"pais": dado[4],
"regiao": dado[5],
"cidade": dado[6],
"codigoZip": dado[7],
"latitude": dado[8],
"longitude": dado[9],
"fusoHorario": dado[10]
};
}
async function setup() {
var dados = await getDadoIP('IP-goes-here');
console.log(dados);
}
问自己一个问题:“哪个函数正在返回某些内容?”,然后查找
函数的所有实例。然后阅读有关异步javascript的内容:)问自己一个问题:“哪个函数正在返回某些内容?”,然后查找函数的所有实例。然后阅读有关异步javascript的内容:)完美。非常感谢。完美的非常感谢。