2013-08-25 54 views
2

我知道良好的JavaScript,但在JSON完全的新手,需要做到以下幾點:得到IP地理位置,以「ipinfodb」

得到IP地理位置,以「ipinfodb」 這樣的迴應:

OK;;174.88.229.95;CA;CANADA;QUEBEC;MONTREAL;H1A 0A1;45.5088;-73.5878;-04:00 

我發現許多代碼,但似乎都更喜歡保存在cookie中 的結果,我想最少的必要的代碼來檢索這些信息 保存他們的餅乾和選項複雜化和長期越想關心它後,我的自我..(我不喜歡把我不明白的代碼) 最好將是一個簡單的函數,返回此信息作爲字符串或數組,這樣

function getLocFromIP(IP){ 
    (js + json code) 
    return result; 
} 

很多預先感謝


感謝大家的回答我試圖篩選出解決方案,它的工作原理,但我還不太滿意的結果.. 我要在這裏重新說明我的問題在這裏: 在那裏我可以從最簡單的方式(JavaScript),即意味着沒有json或jquery回收地理位置。 。 阿賈克斯將是完美的,但它不工作之三域(不同域) 再次感謝

OK;;174.88.230.88;CA;CANADA;QUEBEC;MONTREAL;H1A 0A1;45.5088;-73.5878;-04:00 

回答

0

您發佈的例子是無效的JSON(你可以檢查,如果事情是有效的JSON地方,比如here)。也就是說,看着ipinfodb網站,他們似乎有辦法使用API​​獲取JSON輸出(請參閱here)。

一旦你有有效的JSON,你可以使用JSON.parse。有關使用它的一些示例,請參閱here

所以總的想法是

function getLocFromIP(IP){ 
    //(js code to use ipinfodb API to get valid JSON reponse) 
    //(js code using JSON.parse to parse the received JSON reponse) 
    //(js code to get whatever you want as the result) 
    return result; 
} 

作爲一個側面說明,如果你使用jQuery,你也可以使用jQuery.parseJSON解析JSON(見here),如果您使用舊的預期客戶,這將是更可靠可能不支持JSON.parse的瀏覽器。

+0

謝謝,我會試試這個:-) – Malek

0

IP location XML API需要一些查詢字符串,如&format=json&callback=?附加到ip地址以獲得json。

然後你得到JSON這樣的:

{ 
    "statusCode": "OK", 
    "statusMessage": "", 
    "ipAddress": "175.108.204.0", 
    "countryCode": "JP", 
    "countryName": "JAPAN", 
    "regionName": "TOKYO", 
    "cityName": "TOKYO", 
    "zipCode": "214-002", 
    "latitude": "35.6149", 
    "longitude": "139.581", 
    "timeZone": "+09:00" 
} 

這裏是一個示例代碼(感謝@iveoak好模板):

function getLocFromIP(IP){ 
    //(js code to use ipinfodb API to get valid JSON response) 
    var url = 'http://api.ipinfodb.com/v3/ip-city/?key=<your_api_key>&ip=' + ip + '&format=json&callback=?'; 
    var response = $.getJSON(url); // using jQuery 

    //(js code using JSON.parse to parse the received JSON response) 
    response.then(function (location) { 
     var info = '<ul>'; 
     for (var key in location) { 
      info += '<li>' + key + ': ' + location[key] + '</li>'; 
     } 
     info += '</ul>'; 
    }); 

    //(js code to get whatever you want as the result) 
    return result; 
} 

如果你不使用jQuery,見How can I open a JSON file in JavaScript without jQuery?

樣品(使用jQuery):http://jsfiddle.net/tokkonoPapa/tevB4/

0

我發佈另一個答案。

這是一個使用jsonp的純JavaScript解決方案。基本上,這是一個使用<script src="http://api.ipinfodb.com/..."></script>的概念。

因此,您可以從任何地方進行諮詢,而無需直接處理json。你可以簡單地獲得javascript對象。

這裏是我的演示:http://jsfiddle.net/tokkonoPapa/vCTpK/

UPDATE:

I/F是略有不同的,你想要什麼。它使用回調函數。

getLocFromIP(ip, function(result) { 
    // use result 
}); 

和演示回報:

OK;;175.108.204.0;JP;JAPAN;TOKYO;TOKYO;214-002;35.6149;139.581;+09:00 

我希望這個基本的解決方案滿足你。