将JSON响应存储到本地变量中

时间:2013-10-12 13:10:04

标签: jquery

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

有什么建议吗?感谢

2 个答案:

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

}