0

我在这里遇到了一些使用 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"}

有什么建议吗?谢谢

4

2 回答 2

0

最后,我找到了解决方案。多谢你们

...
var form_data = { email : $("#signup_email").val(), browser_agent : browser_agent, browser_version : browser_version, os : os, device : device }

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");
});

}

于 2013-10-12T15:07:07.690 回答
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);
});
于 2013-10-12T13:19:13.270 回答