1. 程式人生 > >js獲取客戶端ip/地理位置的方法

js獲取客戶端ip/地理位置的方法

獲取ip有兩種方式,下面分別對每種方法進行研究。

1. 通過script標籤引入url

比如如下程式碼:

<script type="text/javascript" src="http://pv.sohu.com/cityjson?ie=utf-8"></script>  
<script type="text/javascript">  
    alert(returnCitySN.cip)  
</script>

訪問該連結,我們可以看到網頁返回的是一段語句:

var returnCitySN = {"cip": "192.168.1.1", "cid": "CN", "cname": "CHINA"};

所以第一段js程式碼就相當於

<script type="text/javascript">
    var returnCitySN = {"cip": "192.168.1.1", "cid": "CN", "cname": "CHINA"};
</script>

所以我們在後面就可以訪問這個json變數並讀取它的資料了。

<scripttype="text/javascript" src="http://freegeoip.net/json/?callback=foo"></script>  
<scripttype="text/javascript
">
function foo(json){ alert(json.ip); // alerts the ip address } </script>

這個網址和上面的不同,返回的是jsonp,所以我們可以直接使用函式foo,這個名字可以自定義。上面的程式碼相當於

<scripttype="text/javascript">
foo({"ip":"192.168.1.1"});
</script>  
<scripttype="text/javascript">  
    function foo(json){
      alert(json.ip); // alerts the ip address
    }  
</script
>

如果把callback函式去掉,譬如http://freegeoip.net/json/,返回的就只有json資料了,但是這個json資料因為沒有變數名,不好呼叫,我們就要用其他的方法來呼叫這個json資料了。

2. ajax呼叫

如果該url返回的是json格式的資料,要想呼叫,就需要用到ajax。

<script >
    $.getJSON('//freegeoip.net/json/', function(data) {
        console.log(JSON.stringify(data, null, 2));
    });
</script>

以上的程式碼其實是簡寫的ajax,寫成ajax:

$.ajax({
    url: 'http://freegeoip.net/json/',
    success: function(data){
       console.log(JSON.stringify(data));
    },
    type: 'GET',
    dataType: 'JSON'
});