2013-10-12 65 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"); 
}); 

}