【发布时间】:2010-12-11 03:25:35
【问题描述】:
我想知道如何使用 jQuery 获取客户端 IP 地址?
有可能吗?我知道纯 javascript 不能,但使用 Stack Overflow 本身的JSONP 获得了一些代码。
那么,有没有使用 jQuery 的解决方法?
【问题讨论】:
标签: javascript jquery ip-address
我想知道如何使用 jQuery 获取客户端 IP 地址?
有可能吗?我知道纯 javascript 不能,但使用 Stack Overflow 本身的JSONP 获得了一些代码。
那么,有没有使用 jQuery 的解决方法?
【问题讨论】:
标签: javascript jquery ip-address
<html lang="en">
<head>
<title>Jquery - get ip address</title>
<script type="text/javascript" src="//cdn.jsdelivr.net/jquery/1/jquery.min.js"></script>
</head>
<body>
<h1>Your Ip Address : <span class="ip"></span></h1>
<script type="text/javascript">
$.getJSON("http://jsonip.com?callback=?", function (data) {
$(".ip").text(data.ip);
});
</script>
</body>
</html>
【讨论】:
jQuery 可以处理 JSONP,只需传递一个带有回调格式的 url=? $.getJSON 方法的参数,例如:
$.getJSON("https://api.ipify.org/?format=json", function(e) {
console.log(e.ip);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
这个例子是一个非常简单的 JSONP 服务,在 api.ipify.org 上实现。
如果您不是在寻找跨域解决方案,则可以进一步简化脚本,因为您不需要回调参数,并且返回纯 JSON。
【讨论】:
jsonip.appspot.com 显然也支持CORS 和JSONP。
function GetUserIP(){
var ret_ip;
$.ajaxSetup({async: false});
$.get('http://jsonip.com/', function(r){
ret_ip = r.ip;
});
return ret_ip;
}
如果你想使用 IP 并将其分配给变量,试试这个。只需拨打GetUserIP()
【讨论】:
对您的服务器进行简单的 AJAX 调用,然后通过服务器端逻辑来获取 IP 地址。
$.getJSON('getip.php', function(data){
alert('Your ip is: ' + data.ip);
});
那么在php中你可能会这样做:
<?php
/* getip.php */
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');
if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
print json_encode(array('ip' => $ip));
【讨论】: