我在这里遇到了一些JQuery的情况。我想将从外部资源获取的json数据附加到本地数组变量中。但它不会起作用。也许你们在这里可以看到我的代码中的任何逻辑错误,并为我提供更好的解决方案。非常感谢。
这是我的代码:
var form_data =
{
email : $("#signup_email").val(),
browser_agent : browser_agent,
browser_version : browser_version,
os : os
}
$.getJSON( "http://smart-ip.net/geoip-json?callback=?", function(data){
form_data.ip = data.host;
form_data.countryName = data.countryName;
form_data.region = data.region;
form_data.city = data.city;
});
console.log(form_data);
结果:
Object {email: "myemail@gmail.com", browser_agent: "chrome", browser_version: 30, os: "Win32"}
但是,我期待这样的结果:
Object {email: "myemail@gmail.com", browser_agent: "chrome", browser_version: 30, os: "Win32", ip:"192.168.xx.xx", countryName : "indonesia", region : "West Java", city : "batavia"}
有什么建议吗?感谢
答案 0 :(得分:0)
在getJSON响应函数中使用console.log
$.getJSON( "http://smart-ip.net/geoip-json?callback=?", function(data){
form_data.ip = data.host;
form_data.countryName = data.countryName;
form_data.region = data.region;
form_data.city = data.city;
console.log(form_data);
});
答案 1 :(得分:0)
最后,我找到了解决方案。谢谢你们
...
var form_data =
{
电子邮件:$("#signup_email")。val(),
browser_agent:browser_agent,
browser_version:browser_version,
os:os,
设备:设备
}
get_user_geolocation(function (data){
form_data.ip = data.host; //ip
form_data.countryName = data.countryName; // negara
form_data.region = data.region; //provinsi
form_data.city = data.city; //kota
console.log(form_data)
sign_up(form_data);
});
...
});
});
function get_user_geolocation(callback)
{
$.ajax({
url: "http://smart-ip.net/geoip-json?callback=?",
type: "GET",
dataType: "json",
success: function(data){
callback(data);
}
});
}
function sign_up(form_data)
{
$.ajax({
url: "signup_process.php",
data: form_data,
type: "POST",
dataType: "json",
}).done(function(data) {
alert(data);
}).fail(function(data){
alert("server error");
});
}