2013-10-12 35 views
0

我在这里用JQuery了解了一些情况。我想将从外部资源获取的json数据附加到本地数组变量中。但它不会工作。也许你们在这里可以看到我的代码中的任何逻辑错误,并为我提供更好的解决方案。非常感谢。将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: "[email protected]", browser_agent: "chrome", browser_version: 30, os: "Win32"} 

但是,我期待得到像这样的:

Object {email: "[email protected]", browser_agent: "chrome", browser_version: 30, os: "Win32", ip:"192.168.xx.xx", countryName : "indonesia", region : "West Java", city : "batavia"} 

任何建议家伙?在响应的getJSON功能感谢

+3

的可能重复[如何返回从AJAX调用的响应?](http://stackoverflow.com/questions/14220321/how-以回报从一个阿贾克斯调用回应) –

+0

非常感谢!这是我正在寻找的。你拯救我的一天:) – under5hell

回答

0

使用的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); 
}); 
0

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

...
VAR form_data = { 电子邮件 :$( “#signup_email”)VAL(), browser_agent:browser_agent, BROWSER_VERSION:BROWSER_VERSION, 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"); 
}); 

}